色彩位深度表示一個像素可以表示多少種顏色,它導致的失真是色彩的丟失,常見的位深度有:
- 8位:一個像素可表示2的8次方即256種顏色,占用1個字節
- 16位:一個像素可表示2的16次方即65,536種顏色,占用2個字節
- 24位:一個像素可以表示2的24次方即16777216種顏色,占用3個字節,24位及以上稱為真彩色。
- 32位:一個像素可以表示2的32次方即42944967296種顏色,占用4個字節。
顏色模式表示一個像素中顏色通道的占位情況,它決定了像素能表示的顏色的細節多少,它導致的失真是顏色細節的丟失(色階,色調,色溫?)。如Android中定義的顏色模式有
- ARGB_8888:ARGB 四個通道的值都是 8 位,加起來 32 位,也就是 4 個字節。每個像素點占用 4 個字節的大小。能表示最完整的顏色細節。
- ARGB_4444:ARGB 四個通道的值都是 4 位,加起來 16 位,也就是 2 個字節。每個像素點占用 2 個字節的大小。
- RGB_565:RGB 三個通道分別是 5 位、6 位、5 位,沒有 A 通道,加起來 16 位,也就是 2 個字節。每個像素點占用 2 個字節的大小。
- ALPHA_8:只有 A 通道,占 8 位,1 個字節。每個像素點占用 1 個字節的大小。
從這兩種維度上都可以壓縮圖片,在移動端開發中特別常見,但兩者的使用范圍不一樣:
色彩位深度壓縮:適用於壓縮色彩單一,內容簡單的圖片資源,因為其壓縮后損失的是顏色,只要圖片中沒有復雜的顏色就不會失真。在Windows中,通過查看圖片的屬性,可以知道色彩位深度信息:
通過AndroidStudio預覽圖片,也可以查看到該信息:
顏色模式壓縮:適用於顏色細節少,或者不需要alpha的圖片資源,壓縮后損失的是顏色細節,如果本身沒有太多細節,就幾乎可以認為沒有失真。
需要根據實際情況選擇使用