Побудуйте додаток із 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 потрібно зберігати як НЕПЕРЕПЕРЕЖЕНІ . Спробуйте відкрити файл у фотошопі (або подібному), збережіть як та виберіть "Не чересстрочно".

У моєму випадку це працює

сподіваюся, це допоможе


Єва, ти маєш рацію, дякую! Я експортую з Інтернету в pixelmator, і це нормально.
Michael Chen

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

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

Я зберіг свій png як НЕ ІНТЕРЛЕКТУЮЧИЙ, все одно отримав цю помилку під час першого побудови, але вдруге, коли я будую, ця помилка зникла ...
Цзінь,

23

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


Хм, ви впевнені, що у вас було те саме повідомлення компілятора від наявності дублетів?
brainray

8
Це теж була моя проблема. My Launch Images, де виникають проблеми. За замовчуванням XCode додав чорні зображення в мою папку «Підтримуючі файли», потім я додав ще, але чорні не зникли. Якщо тримач зображення Launch чорний, це означає, що у вашому проекті є зображення. Видаліть чорні зображення та введіть правильні. Зробив це, і тепер знову все добре!
dbDev

15

Переконайтеся, що у вас немає повторюваних записів у цілі "Фаза побудови" -> "Копіювати ресурси пакета"


для тих, хто навіть не має зображень у своєму проекті ... це рішення було єдиним із усіх відповідей, які спрацювали. У мене немає зображень, але я використовую Facebook SDK, і мені довелося видалити все, що було червоним у Фазах побудови-> Копіювати ресурси пакета.
Джефф Граймс,

9

Це може бути налаштування «Стиснути файли PNG» (з розділу «Упаковка» в «Параметрах збірки»).

Я вирішив цю помилку, переключивши її на "Ні".


6

У моєму випадку я виявив, що мій пошкоджений PNG не відкривається у фотошопі. Я відкрив у попередньому перегляді, зберіг як psd, а потім знову зберіг із Photoshop (save-as -> png -> not interlaced). Точно компілюється в xcode 4.


5

Спробуйте знайти та зберегти ці файли * .PNG, використовуючи "Попередній перегляд" , точніше: Файл - Експорт ... - "Зберегти як PNG" . Мені здається, це трапляється, коли ви зберігаєте зображення у Photoshop у режимі "Зберегти для Інтернету", а після цього зображення буде збережене із спеціальним стисненням (LZW) . Ось і все, удачі!


3

Схоже, ваш файл PNG list_cell.pngпошкоджений. Xcode 4 робить більше перевірок, ніж Xcode 3, у багатьох областях і виявляє проблеми, які постійно ховаються у вашому проекті.

Ви намагалися відкрити свій файл PNG у редакторі зображень і зберегти його знову?


1
Так, я вже відкрив його в Preview, це нормально. і я намагаюся зберегти його знову, але помилка все одно відображається.
Michael Chen

Не просто відкрити його в попередньому перегляді. Він також може спробувати усунути помилки на зображенні. Відкрийте його за допомогою програми, яка може редагувати зображення та зберігати нову версію зображення.
Кодо

3

У моєму випадку я вирішив проблему, видаливши порожній "пробіл-ключ" у папці / назві файлу.

Сподіваюся, це теж працює на когось.


2

Мої не перепліталися, але я постійно отримував дивні помилки від pngcrush. Зрештою я видалив файли не просто з диска, а через XCode. Я додав їх назад по черзі, перетягнувши і перетягнувши в XCode, будуючи після кожного, сподіваючись потрапити в той, що мав проблему. Я ніколи цього не робив. Я прийшов до висновку, що вам дійсно потрібно маніпулювати файлами з XCode, а не файловою системою взагалі.


2

у моєму випадку з xcode 4.5 проблема вирішується шляхом надання дозволу за допомогою терміналу

chmod -R + rw / yourprojectpath / yourprojectfolder

це, можливо, не найкраще рішення через блокування файлів із спільним використанням файлів. Але зробить, якщо ви поспішаєте.


2

Мені довелося видалити посилання на PNG-файли та знову додати їх до проекту. Хтось має краще рішення?


1

Мені довелося видалити png-файли, а потім перейти до цілей -> AppName -> Фази побудови -> Редагувати пакет і видалити файли звідти теж.


1

Я отримав ту ж помилку. Вийшло моє PNG, де насправді jpeg. XCode показав їх належним чином, але пристрій iOS - ні. Вирішив це, збереживши jpg як png.


1

Ця помилка трапляється через те, що у вас є зображення в ресурсах із шириною чи висотою менше 5 пікселів, і ви намагаєтеся змінити його розмір. Встановіть для всіх зображень мінімум 5 пікселів, і помилка зникає.


Це те, що сталося зі мною, це виправило.
Перероблена сталь


0

У моєму випадку мені довелося видалити всі файли PNG з папки, а потім повторно додати файли знову, не перетягуючи зображення в інтерфейс Xcode (у розділі Запуск зображень). Останнє було ключовим у моєму випадку, спочатку додавши файли до папки, а потім перетягнувши їх в інтерфейс, якимось чином спричинив дублікат, який все це зіпсував. Спробуйте це, якщо нічого іншого вам не підходить.


0

У мене була та сама проблема. Я вирішив це, видаливши дублікати зображень. Перевірте в різних папках. Це була моя проблема.


0

Я вирішив цю помилку, вона з'являється, коли ви перейменовуєте зображення після введення в проект, тому для вирішення цієї проблеми спочатку слід видалити поточні зображення, перейменувати файли з пошуку, а пізніше скопіювати ці зображення в проект.


0

Можливо, вам допоможуть. Перевірте Alpha Channelвластивість, як показано на скріншоті, що додається. Це повинно бути, YESякщо його NO.

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


0

Можливо, вам допоможуть. Перевірте Alpha Channelвластивість, як показано на скріншоті, що додається. Це повинно бути, YESякщо його NO.

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


0

Єва Мадрасо опублікувала правильну відповідь (принаймні для проблем із переплетеними PNG-файлами), але для тих, хто має цю проблему з безліччю зображень, як це було у мене, ви можете використовувати могріфікацію рекурсивно, щоб деінтерлігувати кожен файл одночасно.

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

Зміна методу чергування не впливає на якість зображення, але впливає на розмір зображення, жодне не дасть вам меншого зображення.

Mogrify поставляється з ImageMagick, і ви можете встановити його за допомогою домашньої мови.


0

Помилка:

Під час читання / Volumes / Mac OS / RDC / Workpot / RestApp / RestApp / default1024_768.png pngcrush виявив помилку libpng: не файл PNG ..

Рішення:

  1. Я відкрив файл "default1024_768" у програмі PaintBrush інструменту і SAVEAS PNG - файл з таким же ім'ям.
  2. Замінив файл Icon у проекті Xcode.
  3. Clean -> Build

Ось і вся його робота схожа на чарівність

Сподіваюся, це комусь допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.