我是靠谱客的博主 寒冷大白,最近开发中收集的这篇文章主要介绍Android 图片(Bitmap对象)在内存中所占大小的计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android Bitmap 在内存中所占大小计算

    • 显示有关概念简单说明
    • 计算Bitmap大小

显示有关概念简单说明

常用的图片格式如 .jpg 、.png、.bmp(Windows)、.gif 等等 是以一定压缩方式压缩的图片文件

Android 常用的显示格式包括 RGB_4444、ARGB_8888、RGB565等, Windows 打开图片文件的属性一般有位深度的描述。

这个表示的意思是(以ARGB_8888为例):有Alpha、Red、Green、Blue4个数据通道,分别表示透明度、红色、绿色、蓝色数据,并且每一个通道是8Bit(1byte=8Bit,8位),那么ARGB_8888就是4个8Bit,即32Bit(4byte)。

以此内推:

  1. RGB_565就是2byte
  2. RGB_4444也是2byte
  3. Windows 位深度24表示3byte

这些代表的是一个像素的数据大小。

Android 设备通常都有一个分辨率 在设置中可以看到:比如我的设备1080 x 2256
屏幕物理尺寸是2.95inch x 6.22inch
那么计算出 屏幕对角线 = w i d t h 2 + h e i g h t 2 = 2.9 5 2 + 6.2 2 2 = 6.89 i n c h sqrt{ width^{2} +height^{2} } = sqrt{ 2.95^{2} + 6.22^{2} } = 6.89inch width2+height2 =2.952+6.222 =6.89inch

像素密度 表示在单位物理尺寸上的像素数量多少:
····比如我的设备 屏幕对角线上的像素个数是 108 0 2 + 225 6 2 = 2501 sqrt{ 1080^{2} +2256^{2} } = 2501 10802+22562 =2501 那么像素密度就是 2501 / 6.89 = 363dpi

因为Android 规定160dpi下 1dp = 1px density = 1 那么我的就是density = 363/160 = 2.27 表示1dp = 2.27px

计算Bitmap大小

以一张手机相机拍摄的4608 x 3456(高 x 宽) 分辨率的图为例,(相机和手机屏幕分辨率不一样,因为相机的光学元器件参数和屏幕不是完全匹配的)

如果按手机的最大宽度为宽度等比例缩放显示:
就是将一张4608 x 3456 (高 x 宽) 缩放成 1440 x 1080(宽与屏幕一致)
RGB_565: 1440 x 1080 x 2 = 3110400 byte = 2.97Mb
ARGB_8888:1440 x 1080 x 4 = 5.93Mb

最后

以上就是寒冷大白为你收集整理的Android 图片(Bitmap对象)在内存中所占大小的计算的全部内容,希望文章能够帮你解决Android 图片(Bitmap对象)在内存中所占大小的计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部