图片占用内存大小计算---pvr和png为例子(8888=32位 = 4个bit像素点 1024 * 1024=4M)

Zwoptex生成的spritesheet除了可以导出png格式的图片外还有pvr格式。pvr格式是iOS的显示芯片可以直接读取的,不需要经过解析就能直接显示,所以渲染速度更快,更节省内存。
有人做了一项测试:

一个空的cocos2D模版工程运行起来之后占用的内存大约是4MB。

直接用CCSprite显示一张2048*1024的数据格式为RGB565的PNG图片之后,内存占用达到了20MB。同样的情况下换成pvr格式之后,内存占用为16MB。也就是说png格式的图片占用了20-4=16MB,pvr格式的图片占用了16-4=12MB。节省了25%。

Zwoptex还有一个选项叫做“ccz压缩”,选中之后图像的大小几乎可以减小一半。这样的文件格式成了:xxx.pvr.ccz,cocos2d是可以识别的。

PVRTC2和PVRTC4是两种pvr压缩的图像格式,他们都是pvr文件。这两种图像格式比普通图像有更快的加载速度和更小的内存占用。

PVRTC4: Compressed format, 4 bits per pixel, ok image quality

PVRTC2: Compressed format, 2 bits per pixel, poor image quality

 

一般pvr格式文件的图像格式有:
RGBA8888: 32-bit texture with alpha channel, best image quality
RGBA4444: 16-bit texture with alpha channel, good image quality
RGB565: 16-bit texture without alpha channel, good image quality but no alpha (transparency)


图像占用内存的公式是:numBytes = width * height * bitsPerPixel / 8

也就是说2048*2048的RGBA8888占用内存16MB,而PVRTC4只占用2MB

这里提供一个 pvr 和 png 文件的转换工具,这个是一个命令行工具,需要在终端运行

使用步骤:

先进入这个工具的文件夹,使用终端运行:sudo cp ccz /usr/sbin/  

将工具拷到系统盘,

然后运行例子汇总的命令就可以了,需要在文件的当前文件夹下面运行

就是打开 终端 输入例子中的命令来进行操作

 
  1. ccz -net //查看自己电脑的mac地址
  2. ccz -ccz abc.pvr.ccz //解压abc.pvr.ccz 为abc.pvr
  3. ccz -ccz abc.pvr.ccz -out xxx.pvr //解压abc.pvr.ccz到输出文件名
  4. ccz -pvr abc.pvr //解压abc.pvr为abc.png
  5. ccz -crop abc.png //按abc.plist中图元配置裁剪abc.png为多个小图
  6. ccz -cczcrop abc.ccz //按abc.plist中图元配置裁剪abc.ccz为多个小图
  7. ccz -pvrcrop abc.pvr //按abc.plist中图元配置裁剪abc.pvr为多个小图


链接:http://pan.baidu.com/s/1pJHVRdh密码: irjx

总结:rgba8888   2048*2048      (2048*2048)/(1024*1024)*(8+8+8+8)/8  = 16M 

 

 

 

 

 

 

关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解

 

A:透明度

R:红色

G:绿

B:蓝

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 

Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位

Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位

Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。

一般情况下我们都是使用的ARGB_8888,由此可知它是最占内存的,因为一个像素占32位,8位=1字节,所以一个像素占4字节的内存。假设有一张480x800的图片,如果格式为ARGB_8888,那么将会占用1500KB的内存。

转自:http://www.cnblogs.com/and_he/archive/2012/12/22/ARGB.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(杂项)