當前位置:首頁 » 安卓系統 » android點陣圖

android點陣圖

發布時間: 2023-06-07 16:33:20

㈠ android的canvas如何轉換為一張bitmap(點陣圖)

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
下面再加上你要畫的方框就行了,畫完後可以直接使用bitmap對象,因為就是直接在bitmap上畫的,將bitmap轉換成.png或者.jpg格式圖片後,就能放到gridview中使用了。

㈡ 在Android 怎麼實現把24bit點陣圖轉化為單色點陣圖

圖像 - 模式 - 灰度
接著
圖像 - 模式 - 點陣圖

「文件」-「另存為」,打開「另存為對話框」,然後在此對話框格式下拉菜單中選「BMP」,點「保存」,打開「BMP選項」對話框,在此對話框選你想要的格式(1位即單色),最後確定

㈢ Android Bitmap 與 Drawable之間的區別和轉換

Android bitmap和drawable的區別和轉換如下:

1.bitmap 轉換 drawable

java">Bitmapbitmap=newBitmap(...);Drawabledrawable=newBitmapDrawable(bitmap);
//Drawabledrawable=newFastBitmapDrawable(bitmap);

2.Drawable to Bitmap
BitmapDrawable, FastBitmapDrawable直接用getBitmap
b. 其他類型的Drawable用Canvas畫到一個bitmap上

Canvascanvas=newCanvas(bitmap)
drawable.draw(canvas);
Drawabled=ImagesList.get(0);Bitmapbitmap=((BitmapDrawable)d).getBitmap();

區別如下:

1.Bitmap - 稱作點陣圖,一般點陣圖的文件格式後綴為bmp,當然編碼器也有很多如RGB565、RGB888。作為一種逐像素的顯示對象執行效率高,但是缺點也很明顯存儲效率低。

2.Drawable - 作為Android平下通用的圖形對象,它可以裝載常用格式的圖像,比如GIF、PNG、JPG,當然也支持BMP,當然還提供一些高級的可視化對象,比如漸變、圖形等。

另外還有如下相類似的格式:

Canvas - 名為畫布,可以看作是一種處理過程,使用各種方法來管理Bitmap、GL或者Path路徑,同時它可以配合Matrix矩陣類給圖像做旋轉、縮放等操作,同時Canvas類還提供了裁剪、選取等操作。

Paint - 可以把它看做一個畫圖工具,比如畫筆、畫刷。管理了每個畫圖工具的字體、顏色、樣式。

㈣ android圖像繪制——畫布保存為圖片

解釋:

1、首先創建一個Bitmap圖片,並指定大小;

2、在該圖片上創建一個新的畫布Canvas,然後在畫布上繪制,並保存即可;

3、需要保存的目錄File,注意如果寫的目錄如「/sdcard/akai/」如果不存在的話,要先創建(file.mkdirs()),否則FileOutputStream會報錯No found;

4、需要添加許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

什麼是畫布呢 其實通過字面意思的理解就是用來繪畫的地方,那麼android里的畫布是神馬樣子的呢?

在自定義畫布中常用到下面3個類

Canvas

這些繪圖方法中的每一個都需要指定一個Paint對象來渲染它

Paint

Paint也稱為"刷子",Paint可以指定如何將基本圖形繪制到點陣圖上。

Paint類相當於一個筆刷和調色板。它可以選擇如何使用上面描述的draw方法來渲染繪 制在畫布上的基本圖形。通過修改Paint對象,可以在繪圖的時候控制顏色、樣式、字體和特殊效果。最簡單地,setColor可以讓你選擇一個Paint的顏色,而Paint對象的樣式(使用setStyle控制)則可以決定是繪制繪圖對象的輪廓(STROKE),還是只填充每一部 分(FILL),或者是兩者都做(STROKE_AND_FILL)除了這些簡單的控制之外,Paint類還支持透明度,另外,它也可以通過使用各種各樣的陰影、過濾器和效果進行修改,從而提供由更豐富的、復雜的畫筆和顏料組成的調色板。

從繼承View類(或其子類)開始,並定義onDraw()回調方法。系統會調用該方法來完 成View對象自己的繪制請求。這也是通過Canvas對象來執行所有的圖形繪制調用的地方,這個Canvas對象是由onDraw()回調方法傳入的。

Android框架只在必要的時候才會調用onDraw()方法,每次請求應用程序准備完成圖形 繪制任務時,必須通過調用invalidate()方法讓該View對象失效。這表明可以在該View 對象上進行圖形繪制處理了,然後Android系統會調用該View對象的onDraw()方(盡 管不保證該回調方法會立即被調用)。

在定製的View組件的onDraw()方法內部,使用給定的Canvas對象來完成所有的圖形繪制處理(如Canvas.draw…()方法或把該Canvas對象作為參數傳遞給其他類的draw() 方法)。一旦onDraw()方法被執行完成,Android框架就會使用這個Canvas對象來繪制一個有系統處理的Bitmap對象。

下面是Paint一些常用方法:

Bitmap

Bitmap繪圖的表面也稱點陣圖(這里詳細說哈點陣圖的功能)。

從資源中獲取點陣圖:

通過Resource的函數:InputStream openRawResource(int id)獲取得到資源文件的數據流後,可以通過2種方式獲得bitmap

使用BitmapDrawable :

使用BitmapDrawable(InputStream is)構造一個BitmapDrawable;

使用BitmapDrawable類的getBitmap()獲取得到點陣圖;

使用BitmapFactory使用BitmapFactory類decodeStream(InputStream is)解碼位 圖資源,獲取點陣圖BitmapFactory的所有函數都是static,這個輔助類可以通過資 源ID、路徑、文件、數據流等方式來獲取點陣圖。

獲取點陣圖的信息

一般獲取點陣圖信息包括:點陣圖大小、透明度、顏色格式等等,這些信息呢可以通過 三-一方法獲取得到Bitmap就迎刃而解了,Android SDK中對Bitmap有詳細說明,大家可以去詳細了解哈。

顯示點陣圖

顯示點陣圖需要使用核心類Canvas,可以直接通過Canvas類的drawBirmap()顯示點陣圖,或者藉助於BitmapDrawable來將Bitmap繪制到Canvas,下面的實例中會詳細列舉到

點陣圖的縮放

點陣圖的縮放,在Android SDK中提供了2種方法:

1:將一個點陣圖按照需求重畫一遍,畫後的點陣圖就是我們需要的了,與點陣圖的顯示幾乎 一樣:
drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)

2:在原有點陣圖的基礎上,縮放原點陣圖,創建一個新的點陣圖:
createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)

點陣圖旋轉

點陣圖的旋轉,離不開Matrix。Android SDK提供了Matrix類,可以通過各種介面來設置 矩陣

android 處理圖片工具

截取視頻幀並轉化為Bitmap

㈤ Android Bitmap理解

參考:
Android Bitmap 詳解:關於 Bitamp 你所要知道的一切

Android Bitmap(點陣圖)詳解

圖片是由大量且有限個數的像素點組成。把一張圖片通過bitmap的方式創建到內存中,實際上就是在內存中創建了一個叫做Bitmap的對象,然後把 圖片所有像素 解碼後的數據存放在Bitmap對象裡面,Bitmap就擁有了圖片的寬高,透明度,顏色值等數據。所以Bitmap的創建是通過BitmapFactory.decodeXxx()。

Config是Bitmap類中的枚舉類。像素由ARGB四個顏色通道組成。Config描述點陣圖中像素的存儲方式。 這里的存儲方式,無非就是對顏色通道和用多大的容器(bit)來存儲的排列組合。所以config會影響圖片透明度,佔用內存大小,保存成文件的大小,圖片質量。
Config的字母表示該配置存儲的像素的顏色通道,數字表示對應通道的數據用多少位來存儲。

ALPHA_8:表示只存儲alpha通道,使用8bit(1位元組)的內存(容器)來存儲一個像素。
RGB_565:表示存儲RGB三個通道,分別使用5bit,6bit,5bit的內存(容器)來存儲一個像素。
ARGB_4444:表示存儲ARGB四個通道,每個通道都是以4bit的內存(容器)來存儲一個像素。
ARGB_8888:表示存儲ARGB四個通道,每個通道都是以8bit的內存(容器)來存儲一個像素。

所以,ARGB_8888配置佔用內存最大,圖片質量最高。
圖片壓縮的一個思路就是降低圖片的配置。

總內存 = 寬的像素數 × 高的像素數 × 每個像素點佔用的大小
註:
1 byte = 8 bit
1 KB = 1024 byte

㈥ android圖片系列 (2) - 靜態 SVG 圖片

SVG 圖片是一種可支持任意縮放的圖片格式,使用 xml 定義,使用 canvas 中 path 路徑來完成繪制,和我們傳統使用的 BitMap點陣圖有很大的區別。

SVG 在前端早就普及了,在android 中是 google 是在5.0之後開始支穗埋持的,14年出來之後兼容是個大問題,隨著2016.2 V7包 23.2.0版本的發布才算是有個相對完善的兼容使用方案。

SVG 的概念我就不寫了,拿來主義啦,原文: Android Vector曲折的兼容之路

不瞎逼逼,我們先來看一看 android 中的 SVG 矢量圖是個什麼東東

看到沒有,這就是一個 SVG 矢量圖片,就是一個 xml 文件,右邊是預覽,先說下,這東西的好處:縮放不失真,體積小。這一個 SVG 圖片只有970個位元組...強大吧,比 png 格式的圖片強的沒邊了吧,png 我們還得適配,做多套,然後一個一個改名字復制到工程里,有了 SVG 媽媽再也不擔心我們寫作業啦...

這里需要解釋下這里的幾個標簽:

這里有一分詳細的屬性說明:

好了下面開始介紹 SVG 啦

首先,需要講解兩個概念——SVG和Vector。

SVG,即Scalable Vector Graphics 矢量圖,這種圖像格式在前端中已經使用的非常廣泛了

Vector,在Android中指的是Vector Drawable,也就是Android中的矢量圖

因此,可以說Vector就是Android中的SVG實現猜顫螞,因為Android中的Vector並不是支持全部的SVG語法,也沒有必要,因為完整的SVG語法是非常復雜的,但已經支持的SVG語法已經夠用了,特別是Path語法,幾乎是Android中Vector的標配

Android以一種簡化的方式對SVG進行了兼容,這種方式就是通過使用它的Path標簽,通過Path標簽,幾洞消乎可以實現SVG中的其它所有標簽,雖然可能會復雜一點,但這些東西都是可以通過工具來完成的,所以,不用擔心寫起來會很復雜。

Path指令解析如下所示:

支持的指令:

M = moveto(M X,Y) :將畫筆移動到指定的坐標位置
L = lineto(L X,Y) :畫直線到指定的坐標位置
H = horizontal lineto(H X):畫水平線到指定的X坐標位置
V = vertical lineto(V Y):畫垂直線到指定的Y坐標位置
C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次貝賽曲線
S = smooth curveto(S X2,Y2,ENDX,ENDY)
Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次貝賽曲線
T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射
A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧線
Z = closepath():關閉路徑

坐標軸為以(0,0)為中心,X軸水平向右,Y軸水平向下
所有指令大小寫均可。大寫絕對定位,參照全局坐標系;小寫相對定位,參照父容器坐標系
指令和數據間的空格可以省略
同一指令出現多次可以只用一個
注意,』M』處理時,只是移動了畫筆, 沒有畫任何東西。 它也可以在後面給出上同時繪制不連續線。
關於這些語法,開發者需要的並不是全部精通,而是能夠看懂即可,其它的都可以交給工具來實現。

這里有一篇 Android vector標簽 PathData 畫圖超詳解 詳細描述了 SVG 中 path 的繪制

好了概念性的東西說完了,我們來看看

SVG 的使用分2種,一種是靜態 SVG 矢量圖,就是本文的主角,本章節主要談論的東西,另一種是 SVG 矢量動畫,是SVG 的高級應用,是給靜態 SVG 加上objectAnimator 動畫,應用的很廣泛,是實現 android icon 動態交互的核心做法。

上面的SVG 圖大家都看到了,我們就是寫一個 xml 的文件,裡面承載的標簽都是描述如何繪制我們想要的圖案的,畫布大小,顏色,路徑等,然後交給系統去繪制。

現在讓我們來看看 SVG 在 andorid 中如何應用,如何兼容5.0以下版本。

SVG 雖然早早就在前端使用了,但是 android 上開始支持 SVG 的使用還是從5.0開始的,在5.0以上系統的使用很簡單,和之前一樣使用 PNG 圖片一樣

首先 android 中的 SVG 圖片的承載方式是一個 xml 文件,所以UI 給我們的 SVG 圖片是不能直接使用的,這里 google 給我們提供載入方式

Android studio 在 2.3.3 的版本中可以直接使用 svg,新建一個 SVGDemo項目,新建 Vector Asset 文件:app-> main -> New -> Vector Asset 如圖所示:

我們選擇 Local File 就是選擇本地svg文件進行導入,對文件命名後點擊 Next ->Finish 在 drawable目錄 下就添加了一個.xml的文件

好了這樣一個 svg 圖片我們算是加入到我們的工程里里了,可以直接使用了。當然在此之前我們把 SVG 圖片放在那個 drawable 文件夾呢。對於這個問題就要說一下了:

有一點需要解釋一下,svg 矢量圖文件我們放在drawable 根目錄即可。android 系統不會根據你把 svg 矢量圖存放在不同的 drawable 文件夾,對圖片進行解析度上的縮放,因此我們不用像使用 PNG 圖片時准備多套圖片了。我們導入 SVG 圖片默認存放的地址就是 drawable根目錄,所以我們就放這里就好了,當然也可以自己寫SVG 圖片,都是 xml 的,自己寫完 path 路徑後都是可以查看預覽的,一般也不會自己寫,都是UI 的活。

這樣就 ok啦,5.0以上的系統SVG你就像一般 png 圖片一樣使用就好啦,你可以試一下。

SVG 在 4.x 版本上的兼容根據 SVG 使用范圍的變化,配置也是逐步增加的

這時 imageview 就不行了,我們需要使用 AppCompatActivity 或是 AppCompatImageView,這時我們需要導入 V7 包

gradle 需要如下配置:

系統會在 4.x 版本時對 SVG 自動生成相應的 drawable 圖,此時 SVG 是沒有無限拉伸特性的,gradle 的配置目的是去這個

舉個例子:

資源設置不能用 src 了,必須使用 srcCompat ,這時我們能看到圖而不是去 SVG 的特性了

這時上面的設置就不夠了,我們在 view 所在的 activity 或是全局添加下面的設置

然後這還不夠,我們必須給 SVG 圖片添加一個容器,比如 selector,這樣我們才能正常使用,比如給 textview 設置圖片,自定義屬性設置圖片

這個 vc_halfstart_24dp 就是 SVG 圖片

這個我們必須要添加官方的 vectorDrawable 支持庫了,最低支持到 23.2.0

這樣基本就沒啥問題了

SVG 配合自定義 view 的話,就得我們讀取 SVG 然後轉換成 path 路徑來畫了,SVG 實質上也是 xml 文件,所以解析 xml 文件的思路也使用,當然還有其他一些 SVG 轉 path 的思路

SVG前戲—讓你的View多姿多彩 一文中提供了一些思路,大家不妨去看看

㈦ android點陣圖兩個點的Color.red(int)+Color.blue+Color.green相等表示什麼意思

Color.red(dst[x0]) + Color.green(dst[x0]) + Color.blue(dst[x0]) == Color.red(dst[x1]) + Color.green(dst[x1]) + Color.blue(dst[x1]) 相等就表示顏色相同唄
450是藍色 0x00c3ff
可以了解下rgb 顏色

熱點內容
英國訪問學者簽證費用 發布:2025-02-08 23:04:46 瀏覽:926
洛奇合成腳本 發布:2025-02-08 22:57:04 瀏覽:141
linux文件軟鏈接 發布:2025-02-08 22:35:48 瀏覽:773
iphone6s緩存怎麼清理 發布:2025-02-08 22:33:17 瀏覽:928
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44
processc語言 發布:2025-02-08 22:11:15 瀏覽:537
國產車配置為什麼這么便宜 發布:2025-02-08 22:09:52 瀏覽:481
伺服器為什麼需要專線 發布:2025-02-08 22:07:27 瀏覽:872
java正則表達式正則替換 發布:2025-02-08 22:01:04 瀏覽:506
伺服器不識別配置的ip地址 發布:2025-02-08 22:00:02 瀏覽:615