從矩陣來看顏色變換

2021-08-18 23:43:41 字數 1420 閱讀 4779

之前從矩陣的角度分析了平移,旋轉,縮放,對稱的變換,文章在從矩陣來看android中的一些動畫變換。

在android中,的物件主要是bitmap,它是由點陣和顏色值組成的。

1、點陣是乙個寬*高的矩陣,矩陣中的每乙個元素對應著的乙個畫素。根據點陣可以計算出占用的記憶體大小。

alpha_8:  每個畫素占用1

byte記憶體

argb_4444: 每個畫素占用2

byte記憶體

argb_8888: 每個畫素占用4

byte記憶體

rgb_565: 每個畫素占用2

byte記憶體

占用記憶體 = 高度顯示畫素 * 寬度顯示畫素 * 每個畫素占用的記憶體大小

顯示畫素 = 實際畫素 * 手機density / density

假設有一張長寬為800

800*600

*4byte = 1875kb = 1.83m

2、顏色值,是由三原色和透明度決定的,即argb,分別對應著四個顏色通道,每個通道用8byte定義,所以乙個顏色值就是乙個int整型,可以表示256x256x256種顏色值。

在android中和顏色有關的幾個常量:argb_8888、argb_4444、rgb_565。

argb_8888,是的透明度、r、g、b的每個顏色值佔8bit,可以表示256x256x256種顏色,也就是可以表示最多的顏色值,質量也是最好的。

argb_4444,是的透明度、r、g、b的每個顏色值佔4bit,可以表示16x16x16種顏色,相對argb_8888,它節省了空間,卻失去了很多色彩。

rgb_565,它只有r、g、b三個顏色通道,沒有透明度通道,可以表達32x64x32種顏色。

四個顏色通道是由乙個4x5的變換矩陣控制的。

所以,可以知道,紅色通道由第一行控制。

綠色通道由第二行控制。

藍色通道由第三行控制。

透明度通道由第四行控制。

另外的,第五列是每個通道的偏移量。注意倍數和相加的影響,每個通道最後的值不應該大於256.

在android中,有乙個和顏色矩陣相關的android.graphics.matrix類,該類中有與顏色變換相關的方法。

關於matrix方法的使用這裡就不詳細講了。

例項:

public

static bitmap testbitmap(bitmap bitmap)

; cm.set(array);

paint.setcolorfilter(new colormatrixcolorfilter(cm));

canvas.drawbitmap(bitmap, 0, 0, paint);

return output;

}

從矩陣的定義開始談OpenGL矩陣變換

前言 矩陣的定義 先從2d場景說起.先從乙個最簡單的問題開始.q1 乙個點p x,y 它關於原點o的對稱點為p x y 請問x y 與x,y有什麼關係?下面兩個問題稍微難一些。q2 點 繞o逆時針旋轉45 得到點p x y 求p 的座標。a2 設p座標為p x,y 且滿足 由題意 p旋轉45 後得到...

從UIImage的矩陣變換看矩陣運算的原理

1.矩陣的基本知識 struct cgaffinetransform cgaffinetransform cgaffinetransformmake cgfloat a,cgfloat b,cgfloat c,cgfloat d,cgfloat tx,cgfloat ty 為了把二維圖形的變化統一在...

從UIImage的矩陣變換看矩陣運算的原理

1.矩陣的基本知識 struct cgaffinetransform cgaffinetransform cgaffinetransformmake cgfloat a,cgfloat b,cgfloat c,cgfloat d,cgfloat tx,cgfloat ty 為了把二維圖形的變化統一在...