hot*_*aw2 140
PNG是像素完美(无损),只需要很少的额外CPU能量来显示.但是,与更压缩的图像格式相比,较大的PNG可能需要更长的时间才能从存储中读取,因此显示速度较慢.
JPG的存储空间较小,但有损(数量取决于压缩级别),显示它们需要更复杂的解码算法.但典型的压缩和图像质量通常足以用于照片.
使用JPG用于照片和任何大型照片,PNG用于任何小尺寸和/或设计为"像素完美"(例如小图标)或作为合成透明覆盖图的一部分等.
sha*_*lla 20
Apple优化了iPhone应用程序包中包含的PNG图像.实际上,iPhone使用特殊编码,其中颜色字节针对硬件进行了优化.在构建项目时,XCode会为您处理这种特殊编码.因此,您确实看到了在iPhone上使用PNG的其他好处,而不是考虑其尺寸.因此,绝对建议将PNG用于作为界面一部分出现的任何图像(在表格视图,标签等中).
至于显示诸如照片之类的全屏图像,您仍然可以从PNG中获益,因为它们是无损的,并且视觉质量应该优于JPG,更不用说解码图像时的资源使用.您可能需要降低JPG的质量才能看到文件大小的真正好处,但是您显示的是非最佳图像.
文件大小当然是一个因素,但在选择图像格式时还有其他考虑因素.
res*_*ode 11
PNG有一个重要的考虑因素.如果您的Xcode版本中包含PNG,它将针对iOS进行优化.这叫做PNG crush.如果您的PNG在运行时下载,它将不会被粉碎.压碎的PNG与100%JPG大致相同.质量较低的JPG比高质量的JPG运行得更好.因此从性能的角度来看,从最快到最慢,它将采用低质量的JPG,高质量的JPG,PNG Crushed,PNG.
如果您需要下载PNG,您应该考虑在下载之前破坏服务器上的PNG.
http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/
该Cocoanetics博客发表了一份不错的iOS的业绩比较基准 不同质量等级的JPG文件,而PNG格式,有和没有破碎.
从他的结论:
如果您绝对需要Alpha通道或必须使用PNG,那么建议您在Web服务器上安装pngcrush工具并让它处理所有PNG.在几乎所有其他情况下,高质量的JPEG结合了较小的文件大小(即更快的传输)和更快的压缩和渲染.
事实证明,PNG非常适合用于UI元素的小图像,但它们不适合用于任何全屏应用程序,如目录或杂志.在那里,您可能希望选择60到80%的压缩质量,具体取决于您的源材料.
为了让它全部显示,你将想要挂起你曾经绘制过的UIImage实例,因为那些文件中有一个缓存的未压缩版本的文件.如果您没有在屏幕上显示大图像的视觉暂停,则必须提前对几张图像强制解压缩.但请记住,这些将占用大量内存,如果您过度使用它可能会导致您的应用程序被终止.NSCache是放置常用图像的好地方,因为当RAM变得稀缺时,它会自动处理图像的逐出.
遗憾的是,我们无法知道图像是否仍然需要解压缩.此外,图像可能已经驱逐了未压缩的版本,而没有通知我们这种效果.这可能是在Apple的bug报告网站上提出的一个好雷达.但幸运的是,如果图像已经解压缩,则如上所示访问图像不会花费时间.所以你不仅可以"及时"而且"以防万一"这样做.
刚想我会分享一些减压性能数据......
我正在做一个360度观察器的原型设计 - 一个用户可以旋转从不同角度拍摄的一系列照片的旋转木马,给人一种能够平滑旋转物体的印象.
我已经将图像数据加载到NSData的数组中,以便将文件i/o从等式中取出,但是可以动态创建NSImage.在接近最大帧速率(~25 fps)下进行测试并在仪器中观察我看到应用程序显然是CPU限制的,并且CPU负载大约增加10%,显示~275 kb png和~75 kb jpg.
我不能肯定地说,但我的猜测是CPU限制只是来自一般程序执行并将所有数据移动到内存中,但是图像解压缩是在GPU上完成的.无论哪种方式,JPG与PNG性能参数都倾向于支持JPG,尤其是当考虑较小的文件大小(因此至少在链的某些部分中内存中较小的对象大小)时.
当然每种情况都不同,测试无可替代......
我发现使用jpegs vs png时动画性能存在很大差异.例如,在UIScrollView中并排放置三个屏幕大小的jpeg并在iPhone4上水平滚动会导致延迟和完全令人不快的生涩动画.对于相同尺寸的非透明png,滚动是平滑的.我从不使用jpegs,即使图像很大.
| 归档时间: |
|
| 查看次数: |
43716 次 |
| 最近记录: |