Android圖片壓縮質量引數Bitmap.Config RGB_565、 ARGB_8888的含義及用法

拭心發表於2015-06-04

android中的大圖片一般都要經過壓縮才顯示,不然容易發生oom,一般我們壓縮的時候都只關注其尺寸方面的大小,其實除了尺寸之外,影響一個圖片佔用空間的還有其色彩細節。

開啟Android.graphics.Bitmap類裡有一個內部類Bitmap.Config類,在Bitmap類裡createBitmap(intwidth, int height, Bitmap.Config config)方法裡會用到,開啟個這個類一看

列舉變數
public static final Bitmap.Config ALPHA_8
public static final Bitmap.Config ARGB_4444
public static final Bitmap.Config ARGB_8888
public static final Bitmap.Config RGB_565

一看,有點蒙了,ALPHA_8, ARGB_4444,ARGB_8888,RGB_565 到底是什麼呢?

其實這都是色彩的儲存方法:我們知道ARGB指的是一種色彩模式,裡面A代表Alpha,R表示red,G表示green,B表示blue,其實所有的可見色都是右紅綠藍組成的,所以紅綠藍又稱為三原色,每個原色都儲存著所表示顏色的資訊值

說白了就ALPHA_8就是Alpha由8位組成
ARGB_4444就是由4個4位組成即16位,
ARGB_8888就是由4個8位組成即32位,
RGB_565就是R為5位,G為6位,B為5位共16位

由此可見:
ALPHA_8 代表8位Alpha點陣圖
ARGB_4444 代表16位ARGB點陣圖
ARGB_8888 代表32位ARGB點陣圖
RGB_565 代表8位RGB點陣圖

點陣圖位數越高代表其可以儲存的顏色資訊越多,當然影象也就越逼真。

使用RGB_565會比使用ARGB_8888少消耗2倍的記憶體,很多時候預設是ARGB_8888,所以我們需要主動設定為RGB_565.

用法:

在壓縮之前將option的值設定一下:

1
options.inPreferredConfig = Bitmap.Config.RGB_565;

相關文章