Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone上将.png转换为PVRTC*_Iphone_Objective C - Fatal编程技术网

在iPhone上将.png转换为PVRTC*

在iPhone上将.png转换为PVRTC*,iphone,objective-c,Iphone,Objective C,是否有标准机制或已知库可以将.png图像转换为iPhone本身上的压缩PVRTC纹理(而不是在使用OS X上的标准工具进行开发期间) 我的应用程序中有许多.png纹理,但交换是一个问题。我想在设备上创建.pngs的PVRTC变体,如果应用程序启动时(或者可能是第一次加载应用程序时)可用内存不足。我会小心地假设这会对您有所帮助。一旦您引用了一次图像,即将它们加载到UIImage中,iPhone将开始缓存您的PNG,无论您是否喜欢它们。在我看来,压缩它们并不能很好地满足您的需求。我在网上没有看到任何

是否有标准机制或已知库可以将.png图像转换为iPhone本身上的压缩PVRTC纹理(而不是在使用OS X上的标准工具进行开发期间)


我的应用程序中有许多.png纹理,但交换是一个问题。我想在设备上创建.pngs的PVRTC变体,如果应用程序启动时(或者可能是第一次加载应用程序时)可用内存不足。

我会小心地假设这会对您有所帮助。一旦您引用了一次图像,即将它们加载到UIImage中,iPhone将开始缓存您的PNG,无论您是否喜欢它们。在我看来,压缩它们并不能很好地满足您的需求。

我在网上没有看到任何关于如何手动构建PVRTC图像的信息,据我所知,iPhone中不支持这种内置方式(并且不需要读取PVRTC文件)

对于大多数应用程序,包含或构造两个版本的文件几乎没有意义。在最佳条件下,PVRTC版本应该与PNG版本几乎没有区别,实际上只是文件的“预处理”版本,优化后可直接流式传输到视频内存中

通常,最好浏览所有图像,并决定如何对图像进行最佳打包,以平衡所有用户的内存节约和质量,而不仅仅是在特定的内存受限情况下

一些值得考虑的事情(如果这是多余的知识,道歉):

  • PVRTC文件可能会在复杂的alpha混合图像中出现问题,因为预处理可能会导致混合边缘出现难看的瑕疵
  • 不透明PNG文件应在原始图像中删除其alpha通道(节省内存和混合开销)
  • 对于颜色范围有限的图像,请将图像从PNG32减少到PNG16或PNG8以节省磁盘内存
  • 如果这是基于OpenGL的程序,考虑使用一个增强版本的Trutu2D(例如来自COSCO2D),它支持诸如565和4444的备用像素格式。通过仔细选择与原始图像中颜色平衡相对应的像素格式,这可以极大地减少图形卡中的开销,对图像质量的影响最小
  • 此外,对于基于OpenGL的程序,避免背景的单个图像(320x480),因为这将导致每个图像的内存中都有512x512纹理。将图像分割成更小的部分,或将图像制作为512x512,并用其他图像填充额外的空间,以便只需加载一个纹理
  • 与所有事情一样,首先关注最大的图片,以获得最大的回报
  • 还值得注意的是,由于您的应用程序将是唯一正在运行的(系统应用程序除外),因此唯一真正的内存开销将是有限的“磁盘”空间。制作所有图像文件的第二份副本实际上对您不利,而不是有帮助


    Barney

    < P>如果你想在iOS上压缩图片到PVR,你可以考虑OpenScEngPress插件PVR:


    .

    如果PVRTC更合适,我不打算加载.png。我想让应用程序做的第一件事是检查可用内存,并选择正确的格式用于其余应用程序的执行。我只是不想在原始下载中发布同一图像的两个变体。谢谢回复。我已经熟悉了这些要点(我也使用Cocos2D)。我已经使用了一些1024x1024纹理的精灵表。我尝试过其他像素格式和PVRTC。对于经常使用,它们降低了我的用户界面的质量,这超出了我的意愿。但是对于内存非常低的情况(例如,我的应用程序在哪里启动,我认为Barney的答案目前是最正确的。如果有人有关于如何实际转换图像格式的具体细节,我将切换答案。可能我遗漏了一些内容,但我在该文件中看不到任何压缩器。是的,对不起,我与另一个阅读器进行了交换。这里没有压缩器。