Android PNG/JPG图ARGB_8888/RGB_565‌解码形成Bitmap在物理内存占用大小的简单计算

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

相关推荐
游戏开发爱好者816 分钟前
iPhone 网络调试的过程,请求是否发出,是否经过系统代理,app 绕过代理获取数据
android·网络·ios·小程序·uni-app·iphone·webview
_李小白31 分钟前
【Android 美颜相机】第十三天:GPUImage3x3ConvolutionFilter解析
android·数码相机
游戏开发爱好者81 小时前
在 Linux 环境通过命令行上传 IPA 到 App Store,iOS自动化构建与发布
android·linux·ios·小程序·uni-app·自动化·iphone
帅次1 小时前
系统分析师-移动应用系统分析与设计
android·ios·微信小程序·小程序·android studio·webview
MengFly_1 小时前
Compose中rememberUpdatedState的作用
android·kotlin·compose
韩立学长1 小时前
【开题答辩实录分享】以《志愿者公益网站的设计与实现》为例进行选题答辩实录分享
android·java·开发语言
%xiao Q10 小时前
GESP C++五级-202406
android·开发语言·c++
二哈喇子!11 小时前
JavaWeb+Vue分离项目实现增删改查讲解
android
2501_9445215911 小时前
Flutter for OpenHarmony 微动漫App实战:推荐动漫实现
android·开发语言·前端·javascript·flutter·ecmascript
2501_9445215913 小时前
Flutter for OpenHarmony 微动漫App实战:图片加载实现
android·开发语言·前端·javascript·flutter·php