将普通PNG转换为iPhone优化格式

时间:2009-07-26 11:53:17

标签: iphone cocoa-touch

我有一个iPhone应用程序,可以从互联网上下载图像并保存以供日后显示。

用户可以从UITableView中选择要查看的图像,表格视图具有自定义单元格,可以显示不同大小的原始图像的缩略图。

首次下载大图像时,它会缩放为缩略图大小,并使用UIImagePNGRepresentation保存缩略图。

我想要做的是将缩略图保存为优化的iPhone PNG格式。我怎样才能做到这一点?它只是通过将原始大图像加载到内存并保存它来神奇地发生吗?在保存之前,我是否必须对缩略图进行任何进一步处理?

3 个答案:

答案 0 :(得分:2)

UIImagePNGRepresentation可能无法创建图像,因为它们是非符合要求的PNG,并且无法被其他任何内容读取。如果他们的API生成了无法读取的PNG,我认为它会记录下来,并且从手机上传PNG的任何人都会注意到它们无效。

优化非常有用,但大多数优化的PNG都是UI的一部分,其中优化是作为构建过程的一部分完成的。机会是执行优化的成本将抵消从中获得的任何收益。

答案 1 :(得分:0)

事实证明,优化格式中使用的RGB565色彩空间在CGGraphicsContext中根本不可用,CGGraphicsContext是所有UIwhatever组件使用的渲染类。

因此,如果我在保存之前编写了一些代码来更改图像的颜色空间,那么我无法将纹理恢复到UI类中。使用它的唯一方法是将其直接加载到OpenGL内部并在我的应用程序中使用OpenGL。

答案 2 :(得分:0)

不要担心“优化的PNG”格式,因为它没有产生任何显着差异。

does not affect rendering speed at all,加载速度为dictated by file size more than file format

所以只需将其保存为可以提供最小文件的格式。如果你没有使用透明度,那么它可能是JPEG。

如果您需要透明度,并且在保存图像时可能会花费更多的CPU时间,那么在程序中包含pngquant(它在类似BSD的许可下)并将这些PNG缩小为8位调色板。