Создайте приложение с помощью Xcode 4 - он всегда показывает ошибку, связанную с изображением PNG


88

Когда я создаю свое приложение с Xcode 4, он всегда показывает это сообщение об ошибке:

CopyPNGFile /Users/michaelchen/Library/Developer/Xcode/DerivedData/iMusicBox-boeawugacmhacbdtyymnprzfobyq/ArchiveIntermediates/iMusicBox/InstallationBuildProductsLocation/Applications/iMusicBox.app/list_cell.png Images/list_cell.png
    cd /Volumes/WORK/Works/iMusicBox
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    "/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng" -compress "" /Volumes/WORK/Works/iMusicBox/Images/list_cell.png /Users/michaelchen/Library/Developer/Xcode/DerivedData/iMusicBox-boeawugacmhacbdtyymnprzfobyq/ArchiveIntermediates/iMusicBox/InstallationBuildProductsLocation/Applications/iMusicBox.app/list_cell.png

При проверке альфа-каналов в /Volumes/WORK/Works/iMusicBox/Images/list_cell.png pngcrush обнаружил ошибку libpng: недостаточно данных изображения

но с Xcode 3.2 все в порядке - почему?

Ответы:


191

Нашел !!

Вы должны сохранять файлы PNG как НЕ ПЕРЕМЕШАЕМЫЕ . Попробуйте открыть файл в Photoshop (или аналогичном), сохранить как и выбрать «Без чересстрочной развертки».

Это работает в моем случае

надеюсь это поможет


Ева, ты права, спасибо! Экспортирую из Интернета в пиксельматоре, и все в порядке.
Майкл Чен

6
мужчина! слава Богу! и вы! Я собирался пойти на крышу, чтобы выбросить оттуда свой дурацкий ноутбук, когда увидел этот ответ, и он сработал. Большое спасибо. Думаю, пора спать.
Sahil Chaudhary

7
В моем случае оказалось, что у меня было несколько ссылок на один и тот же файл в Xcode (это, вероятно, означало, что он пытался обработать файл более одного раза?) Удаление повторяющейся ссылки устранило проблему.
Питер Джонсон

Я сохранил свой png как НЕ ПЕРЕСЕЧЕННЫЙ, при первом построении по-прежнему возникала эта ошибка, но при второй сборке эта ошибка исчезла ...
Цзин

23

Это происходит, когда у вас есть несколько записей для файла изображения в файле проекта. Понятия не имею, почему, но я просто удалил все записи, перезагрузил проект и снова добавил файл.


Хм, вы уверены, что у вас было такое же сообщение компилятора из-за дублетов?
brainray 05

8
Это тоже была моя проблема. Мои изображения запуска вызывают проблемы. По умолчанию XCode добавил черные изображения в мою папку «Вспомогательные файлы», затем я добавил еще, но черные не исчезли. Если держатель изображения запуска черный, это означает, что в вашем проекте есть изображение для него. Удалите черные изображения и внесите правильные. Сделал это, и теперь все снова хорошо!
dbDev 05

15

Убедитесь, что у вас нет повторяющихся записей в Target's «Build Phase» -> «Copy Bundle Resources»


для всех, у кого даже нет изображений в своем проекте ... это решение было единственным из всех подходящих ответов. У меня нет изображений, но я использую Facebook SDK, и мне пришлось удалить все, что было красным, в Build Phases-> Copy Bundle Resources.
Джефф Граймс

9

Это может быть параметр «Сжать файлы PNG» (из раздела «Упаковка» в настройках сборки).

Я решил эту ошибку, переключив ее на «Нет».


6

В моем случае я обнаружил, что мой поврежденный png не открывается в фотошопе. Я открыл предварительный просмотр, сохранил как psd, а затем снова сохранил из фотошопа (save-as -> png -> not-interlaced). Теперь компилируется нормально в xcode 4.


5

Попробуйте найти и пересохранить эти * .PNG файлы, используя «Предварительный просмотр» , а точнее: Файл - Экспорт ... - «Сохранить как PNG» . Мне кажется, что это происходит, когда вы сохраняете изображение в Photoshop в режиме «Сохранить для Интернета» и после этого изображение будет сохранено со специальным сжатием (LZW) . Все, удачи!


3

Похоже, ваш файл PNG list_cell.pngповрежден. Xcode 4 выполняет больше проверок, чем Xcode 3, во многих областях и выявляет проблемы, которые все время скрывались в вашем проекте.

Вы пытались открыть файл PNG в редакторе изображений и снова сохранить его?


1
Да, уже открываю в Preview, все нормально. и я пытаюсь сохранить его снова, но ошибка все еще отображается.
Майкл Чен,

Не открывайте его только в режиме предварительного просмотра. Он также может попытаться обойти ошибки в изображении. Откройте его с помощью приложения, которое может редактировать изображения и сохранять новую версию изображения.
Codo


2

У меня не было чересстрочной развертки, но я продолжал получать странные ошибки от pngcrush. В итоге я удалил файлы не только с диска, но и через XCode. Я добавил их обратно один за другим, перетащив их в XCode, создавая после каждого, ожидая найти тот, в котором возникла проблема. Я никогда не делал. Я пришел к выводу, что вам действительно нужно манипулировать файлами из XCode, а не файловой системой вообще.


2

в моем случае с xcode 4.5 проблема решается выдачей разрешения с терминала

chmod -R + rw / ваш путь к проекту / ваша папка проекта

Возможно, это не лучшее решение из-за блокировки файлов с помощью совместного использования файлов. Но подойдет, если вы торопитесь.


2

Мне пришлось удалить ссылки на PNG и снова добавить их в проект. У кого-нибудь есть лучшее решение?


1

Мне пришлось удалить файлы png, а затем перейти в Targets -> AppName -> Build Phases -> Bundle Resources и удалить файлы оттуда.


1

У меня такая же ошибка. Оказалось, что мои png там на самом деле jpeg. XCode показал их правильно, а устройство iOS - нет. Решил, сохранив jpg как png.


1

Эта ошибка возникает из-за того, что у вас есть изображение в ресурсах, ширина или высота которого меньше 5 пикселей, и вы пытаетесь изменить размер этого изображения. Установите для всех изображений минимум 5 пикселей, и ошибка исчезнет.


Это то, что случилось со мной, это исправило.
Recycled Steel


0

В моем случае мне пришлось удалить все файлы PNG из папки, а затем повторно добавить файлы без перетаскивания изображений в пользовательский интерфейс Xcode (в разделе «Запуск изображений»). Последнее было ключевым в моем случае, сначала добавив файлы в папку, а затем перетащив их в пользовательский интерфейс, каким-то образом вызвал дубликат, который все испортил. Попробуйте это, если вам больше ничего не подходит.


0

У меня такая же проблема. Я решил это, удалив повторяющиеся изображения. Отъезд в разные папки. Это была моя проблема.


0

Я решил эту ошибку, она появляется, когда вы переименовываете изображения после помещения в проект, поэтому для решения этой проблемы сначала следует удалить текущие изображения, переименовать файлы из поисковика, а затем скопировать эти изображения в проект.


0

Может вам помочь. Проверьте Alpha Channelсвойство, как показано на прилагаемом снимке экрана. Так и должно быть, YESесли его NO.

введите описание изображения здесь


0

Может вам помочь. Проверьте Alpha Channelсвойство, как показано на прилагаемом снимке экрана. Так и должно быть, YESесли его NO.

введите описание изображения здесь


0

Ева Мадразо опубликовала правильный ответ (по крайней мере, для проблем с чересстрочной разверткой PNG), но для тех, у кого такая проблема с кучей изображений, как у меня, вы можете рекурсивно использовать mogrify для деинтерлейсинга каждого файла сразу.

find ./ -name "*.png" -exec mogrify -interlace none {} \;

Изменение метода чересстрочной развертки не влияет на качество изображения, но влияет на размер изображения, ни один из них не даст вам меньшего изображения.

Mogrify поставляется с ImageMagick, и вы можете установить его с помощью homebrew.


0

Ошибка:

При чтении / Volumes / Mac OS / RDC / Workpot / RestApp / RestApp / default1024_768.png pngcrush обнаружил ошибку libpng: это не файл PNG ..

Решение:

  1. Я открыл файл default1024_768 в PaintBrush инструменте и сохранил как PNG-файл с тем же именем.
  2. Заменил файл Icon в проекте Xcode.
  3. Очистить -> Сборка

Это все его работа, как шарм

Надеюсь, это кому-то поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.