无效的PNG图像文件:iDOT指向的不是有效的IDAT块。

13

我有一些HTML内容页面在应用程序中,我正在使用UIWebView来显示它们。其中一些页面中有一个PNG图像,在xcode的调试控制台中生成以下消息:

ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk

图像仍然显示并且看起来正常。而且,这只发生在我在iPad(第三代)上运行应用程序时。我的iPhone 4不显示此消息。
我的第一个想法是文件名中的~字符引起了问题(我已将~ipad标签添加到文件名中)。但是,删除~字符没有任何效果。
我已经进行了谷歌搜索,但只得到了3个结果。其中2个是中文,似乎Google翻译器翻译得不好。另一个结果似乎是有与我相同问题的人,但没有回复他的post

这是一张非常大的图片吗(尺寸方面)? - Billy Moat
我不确定你是否认为它非常大。它是 742px x 261px。 - kinadian
TweakPNG是一个小程序,有助于查看PNG结构:http://entropymine.com/jason/tweakpng/ - leonbloy
谢谢@leonbloy,TweakPNG程序似乎非常有用。不幸的是,我没有看到一个有效的PNG图像和一个显示错误的图像之间的区别。 - kinadian
6个回答

12

我遇到了同样的问题。解决方法:使用“色彩同步实用程序”,这是一个标准程序,你可以从启动台加载。打开png文件并使用该实用程序保存。


你们两个除了打开PNG文件并重新保存之外还需要做其他的事情吗?我尝试过这样做(在重新构建之前进行清理),但是我仍然在调试控制台中收到消息。@btype - kinadian
不,只需打开并重新保存。在我的情况下,图像仅显示在屏幕的一半上。 - btype
我使用了颜色同步打开并保存了它,但仍然出现错误。这是我使用的图片:http://lcolumbus.files.wordpress.com/2012/10/big-data-drives-rapid-changes.jpg - Heath Borders
1
我有数百个资产。如何确定哪个文件出现了问题? - jjxtra

4

'清理' 项目 (Xcode 菜单路径:产品-> 清理) 解决了我遇到的这个问题。

将 .png 文件另存为新名称并不起作用。

图像在模拟器中出现,但在测试设备上(iPod Touch 第五代)却没有。

图像非常大,大小为 4000 x 4000 像素。


2

奇怪的是,就在一个小时前,我遇到了完全相同的问题。我没有找到特定的原因导致它失败,但我想我能够“修复”图像以使其正确显示而不抛出错误。

我只是在预览中打开它,并从源文件中导出了一个新的PNG文件。一旦我用新创建的文件替换了项目文件中的错误图像,我进行了清理、编译,然后它按预期工作。

希望对您来说也像这样容易...


不幸的是,那个解决方案对我没有起作用。 - kinadian
对我很有用。图片只在屏幕的一半显示,重新保存后就能正常显示了。 - Guillaume

1
你可能需要检查是否在另一个目录中有同名文件。这就是我遇到这个错误的原因..(重复的Default.png)。

我曾经遇到过类似的问题。我修改了一张图片,首先将旧图片从项目中删除,然后添加了修改后的图片。在测试时,我遇到了这个错误,导致“新”图片无法显示。我清理了项目,问题得到解决,图片也成功显示出来了。 - larick

1

我曾经遇到过和我的应用有关的同样问题。原来用户上传到我的服务器并用php+imagemagick编辑的图片已经被剥离了。我使用以下命令来编辑上传的图片:

convert $uploadfile -resize 300x300 -quality 30 -strip $uploadfile

当我移除了 -strip 参数后,错误消失了!

-1

我也遇到了同样的问题。
1 - 关闭XCode;
2 - 在Photoshop中打开图像;
3 - 以80%的质量重新保存(替换相同的图像);
4 - 打开XCode,清理它CMD + SHIFT + K
5 - 再次在您的设备上构建它;

非常简单并且对我有效。
那你呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接