图片内存大小 和 图片文件占用空间大小 是没有必然关系,但是一般来说图片文件大小,图片内存大小就越大。占用空间是在磁盘上占用的空间,内存大小是加载到内存中占用的内存大小。
现在假如有一个图片是600*800的,文件大小100KB。
图片内存大小的计算公式是 : 图片高度 * 图片宽度 * 一个像素占用的字节数
也就是 600 * 800 * 4 byte = 1875KB = 1.83M
而一个像素占用的字节数与图片的编码格式(或者叫bitmap在内存中的存储形式)有关
自然是位数越多显示的效果越好
在Android中,图片的存放目录和手机的屏幕密度影响图片最终的大小,举个例子:
假设我们的图片放到xhdpi目录下,那么我们本文中的图片占用的内存大小如下:
屏幕密度为2的设备:800 * 600 * 4byte = 1.83M
屏幕密度为3的设备:800 * 1.5 * 600 * 1.5 * 4byte = 1.83 * 2.25M = 4.12M
所以,计算图片占用内存大小的时候,要考虑图片所在的目录跟设备密度,这两个因素其实影响的是图片的高宽,android会对图片进行拉升跟压缩。
可以直接使用公式进行计算——图像文件大小 = 图像分辨率X颜色深度/8。
这里的图像分辨率应该是640 X 480.
颜色深度应该是8,因为lb256=8,也就是说2^8=256.
所以图像的大小应该是 640 X 480 X 8 = 2457600 bit ,换算成Byte就是 640 X 480 X 8 / 8 = 307200 B , 再换算成KB,因为1 KB= 1024 B,所以应该是307200 / 1024 = 300KB。
所以图像的大小应该是300KB。
但是问题问的是图像文件的大小,这个要涉及到文件的格式,因为不同文件的格式的图像编码方式不一样,所以会造成不同的文件大小不一样。因为题目没有给出具体文件格式,所以这里就无法计算。
但是图像大小按照计算确实应该是300KB。当然,这里的图像是考虑的灰度图像,256色的灰度图像。
扩展资料:
这里的大小涉及到bit和Byte两个单位,区别如下:
1、容量大小不同
bit是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。
Byte是数据存储的基础单位,1个Byte由8个bits组成,1 Byte又称为一个字节,用一个字节储存,可区别256个数字。
2、存储数据类型不同
bit是电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
Byte可代表一个字元(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是记忆体储存资料的基本单位,至于每个中文字则须要两Bytes。
参考资料:
百度百科-数字图像
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)