不是PNG文件。Command copypng出现错误,但没有返回非零退出代码来指示失败。

24
我在iPad上运行项目并添加图片时遇到以下错误。这些图片在模拟器上都能正常显示,但在iPad上运行时没有任何图片。
CopyPNGFile /Users/user/Library/Developer/Xcode/DerivedData/RImageGallery-cmwaittvclhwgxfpcoarddipyliv/Build/Products/Debug-iphoneos/RImageGallery.app/Default.png PhotoBrowserDemo/Default.png
    cd /Users/user/Desktop/Demo
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng -compress "" /Users/user/Desktop/Demo/PhotoBrowserDemo/Default.png /Users/user/Library/Developer/Xcode/DerivedData/RImageGallery-cmwaittvclhwgxfpcoarddipyliv/Build/Products/Debug-iphoneos/RImageGallery.app/Default.png

   Not a PNG filCommand /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng emitted errors but did not return a nonzero exit code to indicate failure




(null): While reading /Users/user/Desktop/Demo/PhotoBrowserDemo/Default.png pngcrush caught libpng error:




(null): Could not find file: /Users/user/Library/Developer/Xcode/DerivedData/RImageGallery-cmwaittvclhwgxfpcoarddipyliv/Build/Products/Debug-iphoneos/RImageGallery.app/Default.png




Command /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng emitted errors but did not return a nonzero exit code to indicate failure

1
模拟器的文件系统(在OSX上为HFS)是不区分大小写的,而iOS上的HFS是区分大小写的。请检查您路径的大小写是否正确。 - Damien
8
您有多张名称为 Default.png 的图片。 - Rajneesh071
1
@Damien 谢谢您的帮助,它起作用了,当我将格式更改为 .png 时再次保存。谢谢 :) - HDdeveloper
@Rajneesh071,不是那个问题,谢谢你的帮助。 :) - HDdeveloper
3个回答

113

我的回答:

我曾经遇到过这个问题。有两个目标都添加了同一张图片。进入项目目标->构建阶段->复制捆绑资源,并搜索你的图片文件名

很可能有两个条目。删除其中一个。

这样做解决了我的问题。对我有用 :) :)

很高兴能帮上忙 :) :)


2
值得注意的是,您可能会认为您已经在不同的目录中放置了两个具有相同名称的图像,但是从最终捆绑包的角度来看,Xcode中的文件夹实际上并不是真正的目录。 - mblackwell8
Xcode 在我的情况下不知何故将同一文件(具有完全相同的位置)多次添加到复制包资源中。 - Moshe Gottlieb
这就是它。同一图形的两个条目。令人恼火的是,即使在2017年的Xcode 7和8中,这个错误仍然会出现。 - Alex Zavatone

40

案例1:格式差异

当我将图像从jpg格式更改为png格式时,使用预览工具它起作用了。之前可能由于只是名称而不是格式的.png导致无法正常工作。这个链接有所帮助。

同时,为了一次性将文件夹中的多个图像转换为png格式,请使用终端。 使用cd命令进入包含图像(JPG或任何类型)的文件夹。 运行以下代码:

mkdir pngs; sips -s format png *.* --out pngs

它将把您的图像转换为 .png 格式,并创建一个包含转换后图像的 pngs 文件夹。

情况2:两个同名图像或一个图像添加两次:

根据 Rajneesh071 和 Himanshu 的建议:可能会有两个或更多同名的图像,或者为同一图像添加了两个目标。 前往项目目标 -> 构建阶段 -> 复制捆绑资源,搜索您的图像文件名称。然后删除重复的文件。


您刚刚让我开心了,先生! :) - sachadso
在我的情况下,是在“复制的捆绑资源”中具有相同名称的PNG文件。 - fpauer
我使用了"sips -s format png *.png",因为它只涉及到PNG文件。我有其他的JPEG文件,之前的命令会将它们转换为PNG格式。这表明我们应该根据自己的需求定制命令。尽管如此,它仍然是一个救命稻草。 - Pratik Somaiya

1

我希望能够更多地展示@Rajneesh071的评论。在我的情况下,我的项目中有不止一个Default.png文件。当我第一次创建我的项目时,Xcode将Default.png(和其他启动屏幕png文件)放入了我的项目中。在创建自己的启动屏幕并通过Xcode将它们添加到项目后,我开始遇到奇怪的png压缩错误。尝试了许多不同的答案后,我发现了Rajneesh071的评论,即存在多个Default.png。快速过滤了一下Default,确实发现了Xcode提供的Default文件以及我的文件。删除了Xcode提供的Default*.png文件后,就没有出现pngcrush错误了。

如果您觉得这很有用,请在原始问题上给Rajeneesh071的评论点赞。


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