知乎
分辨率和像素是什么關系?
https://www.zhihu.com/question/21149600
轉載 https://blog.csdn.net/adolph_lu/article/details/89706136
音視頻基礎知識匯總:
音視頻基礎知識---協議相關RTSP RTMP HLS
音視頻基礎知識---封裝格式
音視頻基礎知識---視頻編碼格式
音視頻基礎知識---音頻編碼格式
音視頻基礎知識---像素格式RGB
音視頻基礎知識---像素格式YUV
RGB概述
RGB是red,green, blue的簡寫,也就是紅綠藍三種顏色。他們是三原色,通過不同的比例相加,以產生多種多樣的色光。
RGB格式
一般來說,RGB在計算機中的表示主要分為兩大類,一種是索引形式,一種是像素形式:
(1)索引格式:
索引格式是計算機早期的一種格式,它的優點比較節省空間,缺點是表現的色彩有限,目前格式基本被拋棄了,不再被使用,這里只做簡單介紹。
索引格式中的bit存儲的並非是實際的R,G, B值,而是對應點的像素在調色板中的索引。
調色板,可以簡單理解為通過編號映射到顏色的一張二維表。如01索引,表示紅色。采用索引格式的RGB,紅色的像素對應存儲的值便是索引01。就像指針一樣,存儲的是值的地址,而不是真正的值。
RGB1
每個像素用1個bit表示,可表示的顏色范圍為雙色,即黑和白。1個bit只能表示0,1兩種值。需要調色板,不過調色板只包含兩種顏色。
RGB4
每個像素用4個bit表示,4個bit所能夠表示的索引范圍是0-15,共16個。也就是可以表示16種顏色。即調色板中包含16中顏色。
RGB8
每個像素用8個bit表示。8個bit所能夠表示的索引范圍是0-255,共256個。也就是可以表示256中顏色。即調色板中包含256中顏色。
(2)像素格式:
RGB像素格式中的bit存儲的是每一個像素點的R,G,B值
RGB565
一個像素用16個bit = 2個字節表示 ,R=5 G=6 B=5
R = color & 0xF800; //獲取高字節的5個bit
G = color & 0x07E0; //獲取中間6個bit
B = color & 0x001F; //獲取低字節5個bit
RGB555
一個像素用16個bit = 2個字節,但是最高位不用,R=5 G=5 B=5
R = color & 0x7C00; //獲取高字節的5個bit
G = color & 0x03E0; //獲取中間5個bit
B = color & 0x001F; //獲取低字節5個bit
RGB24
一個像素用24個bit = 3個字節來表示,R=8 G=8 B=8
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
RGB32
一個像素用32個bit = 4個字節 來表示,R=8 G=8 B=8,存儲順序為B, G, R,最后8個字節保留。
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
A = color & 0x000000FF;
Android平台下的幾個常用RGB格式:
Bitmap.Config.ALPHA_8
每個像素用8比特位表示,占1個字節,只有透明度,沒有顏色。
Bitmap.Config.RGB_565
每個像素用16比特位表示,占2個字節,RGB分量分別使用5位、6位、5位,見上圖。
Bitmap.Config.ARGB_4444
每個像素用16比特位表示,占2個字節,由4個4位組成,ARGB分量都是4位。
Bitmap.Config.ARGB_8888
每個像素用32比特位表示,占4個字節,由4個8位組成,ARGB分量都是8位。
注意:java默認使用大端字節序,c/c++默認使用小端字節序,android平台下Bitmap.config.ARGB_8888的Bitmap默認是大端字節序,當需要把這個圖片內存數據給小端語言使用的時候,就需要把大端字節序轉換為小端字節序。例如:java層的ARGB_565傳遞給jni層使用時,需要把java層的ARGB_565的內存數據轉換為BGRA565。
————————————————
版權聲明:本文為CSDN博主「adolph_lu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/adolph_lu/article/details/89706136