Android PNG/JPG圖ARGB_8888/RGB_565?解碼形成Bitmap在物理內存占用大小的簡單計算
?
Android的Bitmap 是一個用于表示圖像數據的核心類,代表一張圖片在內存中的存儲,Bitmap存儲了圖像的像素信息數據。
Bitmap把圖像理解為像素點組成的二維矩陣,每個像素點存儲對應位置的一系列 ARGB 值(透明度 + 紅綠藍通道)。
Bitmap在內存中占用大小的關鍵計算公式:
?內存 = 寬度(px) × 高度(px) × 每像素所需的字節數
一字節即1 Byte,1 Byte = 8 bit。?
ARGB_8888為: 4 字節
RGB_565?為: 2 字節。
?
(1) ARGB_8888
例如,一張350 x 350的PNG圖片,PNG 支持透明度,默認使用 ARGB_8888(每個像素存儲 ARGB 通道,共 4 字節),在內存占用的計算方法:
?寬度?:350 像素
?高度?:350 像素
?每像素字節數?:Bitmap.Config 決定,默認 ARGB_8888,占 ?4 字節?。
內存大小 = 350 × 350 × 4 字節 ?= ?490,000 Byte?≈ 478.5 KB
注意?:無論原圖是 PNG(無損壓縮)還是 JPEG(有損壓縮),解碼后的內存占用僅由像素數據決定,與磁盤文件格式無關。
?
(2)RGB_565?
對于RGB_565格式,每個像素占用2字節(16位),其中紅色(R)占5位,綠色(G)占6位,藍色(B)占5位,不包含透明度通道(Alpha)。若設定Bitmap.Config是?RGB_565?(無透明度,2 字節):
350 × 350 × 2 = 245,000 Byte?≈ 239.3 KB
適用于不透明圖片,色彩質量略低。
?
?
Android BitmapFactory.decodeResource讀取原始圖片裝載成原始寬高Bitmap,Kotlin-CSDN博客文章瀏覽閱讀1.5k次。本文介紹了如何使用Kotlin在Android中通過BitmapFactory.decodeResource獲取Drawable的原始寬度和高度,然后創建一個與其尺寸匹配的Bitmap。https://blog.csdn.net/zhangphil/article/details/134449577
?