libpng warning iccp known incorrect srgb profile как исправить
Предупреждение libpng: iCCP: известный неправильный профиль sRGB
Я пытаюсь загрузить изображение PNG с помощью SDL, но программа не работает, и эта ошибка появляется в консоли
Предупреждение libpng: iCCP: известен неправильный профиль sRGB
Почему появляется это предупреждение? Что я должен сделать, чтобы решить эту проблему?
Libpng-1.6 более строг в проверке профилей ICC, чем предыдущие версии. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.
Некоторые приложения обрабатывают предупреждения как ошибки; Если вы используете такое приложение, вы должны удалить чанк. Вы можете сделать это с любым из множества редакторов PNG, таких как ImageMagick’s
Чтобы удалить недействительный кусок iCCP из всех файлов PNG в папке (каталоге), вы можете использовать mogrify из ImageMagick:
Это требует, чтобы ваш ImageMagick был собран с libpng16. Вы можете легко проверить это, запустив:
Если вы хотите выяснить, какие файлы необходимо исправить, а не обрабатывать их вслепую, вы можете запустить
Бинарные выпуски ImageMagick находятся здесь
Используйте pngcrush для удаления неправильного профиля sRGB из файла png:
В выводе консоли вы должны увидеть Removed the sRGB chunk и, возможно, больше сообщений об удалении чанка. В итоге вы получите меньший, оптимизированный файл PNG. Поскольку команда перезапишет исходный файл, обязательно создайте резервную копию или используйте контроль версий.
Решение
Неправильный профиль может быть исправлен с помощью:
Примечание. В этом решении используется библиотека Qt.
пример
Вот минимальный пример, который я написал в C++, чтобы продемонстрировать, как реализовать предложенное решение:
Полный исходный код приложения с графическим интерфейсом на основе этого примера доступен на GitHub.
Вы также можете исправить это в фотошопе… У меня есть CC2015, но я уверен, что это то же самое для всех версий.
Чтобы добавить Гленну отличный ответ, вот что я сделал, чтобы найти, какие файлы были неисправны:
И для каждого из них запустите mogrify, чтобы исправить их.
Это предотвращает изменение фиксации каждого png файла в репозитории, если только некоторые из них были изменены. Плюс у него есть преимущество, чтобы показать, какие именно файлы были неисправны.
Я проверял это на Windows с консолью Cygwin и оболочкой zsh. Еще раз спасибо Гленну, который поставил большую часть вышеупомянутого, я просто добавляю ответ, поскольку его обычно легче найти, чем комментарии 🙂
Благодаря фантастическому ответу Гленна, я использовал функциональность ImageMagik “mogrify *.png”. Однако у меня были изображения, спрятанные в подпапках, поэтому я использовал этот простой скрипт Python, чтобы применить его ко всем изображениям во всех подпапках и подумал, что это может помочь другим:
Существует более простой способ решить эту проблему с Mac OS и Homebrew:
Установите homebrew, если он еще не установлен
или сделать это с каждым файлом в текущем каталоге:
Он создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.
Другой совет – использовать приложения Keynote и Preview для создания значков. Я рисую их с помощью Keynote, размером около 120×120 пикселей, поверх слайда с белым фоном (возможность сделать редактируемые полигоны великолепной!). Перед экспортом в Preview я рисую прямоугольник вокруг значка (без заливки или тени, только контур, размером около 135×135) и копирую все в буфер обмена. После этого вам просто нужно открыть его с помощью инструмента “Просмотр”, используя “Новый из буфера обмена”, выделить область размером 128×128 пикселей вокруг значка, скопировать, снова использовать “Новый из буфера обмена” и экспортировать его в PNG. Вам не нужно запускать инструмент pngfix.
некоторая справочная информация об этом:
Некоторые изменения в версии libpng 1.6+ вызывают предупреждение или даже неправильно работают с исходным профилем HP/MS sRGB, к следующему stderr: предупреждение libpng: iCCP: известный неправильный sRGB profile В старом профиле используется точка белого D50, где D65 является стандартным. Этот профиль не редкость, он используется Adobe Photoshop, хотя по умолчанию он не был встроен в изображения.
Обнаружение ошибок в некоторых кусках улучшилось; в частности, iCCP chunk reader теперь делает довольно полную проверку базового формата. Некоторые плохие профили, которые были ранее приняты, теперь отвергаются, в в частности, очень старый сломанный профиль Microsoft sRGB. Спецификация PNG что в изображениях могут отображаться только профили оттенков серого цвет 0 или 4, и даже если изображение содержит только серый цвет пикселей, только изображения RGB могут отображаться на изображениях с типом цвета 2, 3, или 6, теперь применяется. Блоку sRGB разрешено появляться в изображениях с любым типом цвета.
Попробовав пару предложений на этой странице, я закончил использование решения pngcrush. Вы можете использовать bash script ниже для рекурсивного обнаружения и исправления плохих png-профилей. Просто передайте ему полный путь к каталогу, который вы хотите найти для png файлов.
Используя программу просмотра изображений IrfanView в Windows, я просто сохранил изображение PNG, и это исправило проблему.
Расширяя решение friederbluemle, загрузите pngcrush и затем используйте код, подобный этому, если вы запускаете его для нескольких файлов png
здесь все png файлы, относящиеся к проектам, находятся в 1 папке.
Вот смехотворный ответ грубой силы:
Я изменил gradlew script. Вот моя новая команда exec в конце файла в
предупреждение: libpng warning: iCCP: known incorrect sRGB profile
У меня при сборке «выпрыгнуло» предупреждение:
3 ответа 3
ibpng-1.6 более жестко проверяет профили ICC, чем предыдущие. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.
Некоторые приложения (в моём случае OpenGL) рассматривают предупреждения как ошибки; если вы используете такое приложение, вам нужно удалить iCCP кусок из изображения PNG. Это можно сделать с помощью любого из множества редакторов PNG (по правде говоря стандартный paint в windows у меня не смог). Пример редактор ImageMagick’s : convert in.png out.png.
Бинарные релизы ImageMagick здесь
Для Android-проектов (Android Studio) перейдите в папку res.
Пример: C:\AndroidProjects\
Используйте pngcrush чтобы удалить неправильный профиль sRGB из файла png:
Решение (мне это вариант нравится потому что он в Qt-е :3 )
Не корректный файл может быть исправлен :
Примечание это решение использует Qt билиотеку.
Пример:
Вот минимальный пример, который я написал на C++, чтобы продемонстрировать, как реализовать предлагаемое решение:
Полный исходный код «GUI приложение», основано на этом примере, доступно в GitHub.
Вы можете исправить это в фотошопе. У меня есть CC2015, но я уверен, что такая возможность присутствует во всех версиях.
Используя первый метод решения сего вопроса изменил вид запроса :
Затем выполните поиск в вывод для этих строк: iCCP: Not recognizing known sRGB profile that has been edited.
И для каждого из них, запустить mogrify, чтобы исправить их.
Это предотвращает возможность индексации будто бы все png файлы изменены, когда только некоторые из них действительно были изменены. Кроме того, у этого метода есть преимущество, чтобы точно показать, какие файлы были неисправны.
Я тестировал это на Windows с консолью Cygwin и оболочкой zsh. И еще спасибо первому варианту(автор которого глен ) за точное пояснение как эту проблему можно решить.
вот более простой способ исправить эту проблему с Mac OS с помощью Homebrew:
или сделать с каждым файлом в текущем каталоге:
Homebrew создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.
Используя программу просмотра изображений IrfanView в Windows, я просто сохранил изображение PNG и исправил проблему.
Попробовав пару предложений на этой странице, я остановился на использовании pngcrush. Вы можете использовать скрипт bash ниже для рекурсивного обнаружения и исправления плохих профилей png. Просто передайте ему полный путь к каталогу, который вы хотите найти для png-файлов.
некоторые справочные данные по этому поводу:
Обнаружение ошибок было улучшено в некоторых элементах.в частности, читатель iCCP элемента теперь делает довольно полную проверку базового формата.Некоторые неудачные профили, которые были ранее приняты, теперь отклонены, в частности, очень старый сломанный профиль Microsoft / HP sRGB. Требование спецификации PNG, что только изображения с оттенками серого могут отображаться на изображениях с типом цвета 0 или 4, и даже если изображение содержит только серые пиксели, теперь применяются только профили RGB в изображениях с типом цвета 2, 3 или 6. Элементу sRGB разрешено появляться на изображениях с любым типом цвета.
Предупреждение libpng: iCCP: известный неправильный профиль sRGB
Я пытаюсь загрузить изображение PNG с помощью SDL, но программа не работает, и эта ошибка появляется в консоли
Предупреждение libpng: iCCP: известен неправильный профиль sRGB
Почему появляется это предупреждение? Что я должен сделать, чтобы решить эту проблему?
ОТВЕТЫ
Ответ 1
Libpng-1.6 более строг в проверке профилей ICC, чем предыдущие версии. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.
Некоторые приложения обрабатывают предупреждения как ошибки; Если вы используете такое приложение, вы должны удалить чанк. Вы можете сделать это с любым из множества редакторов PNG, таких как ImageMagick’s
Чтобы удалить недействительный кусок iCCP из всех файлов PNG в папке (каталоге), вы можете использовать mogrify из ImageMagick:
Это требует, чтобы ваш ImageMagick был собран с libpng16. Вы можете легко проверить это, запустив:
Если вы хотите выяснить, какие файлы необходимо исправить, а не обрабатывать их вслепую, вы можете запустить
Бинарные выпуски ImageMagick находятся здесь
Ответ 2
Используйте pngcrush для удаления неправильного профиля sRGB из файла png:
В выводе консоли вы должны увидеть Removed the sRGB chunk и, возможно, больше сообщений об удалении чанка. В итоге вы получите меньший, оптимизированный файл PNG. Поскольку команда перезапишет исходный файл, обязательно создайте резервную копию или используйте контроль версий.
Ответ 3
Решение
Неправильный профиль может быть исправлен с помощью:
Примечание. В этом решении используется библиотека Qt.
пример
Вот минимальный пример, который я написал в C++, чтобы продемонстрировать, как реализовать предложенное решение:
Полный исходный код приложения с графическим интерфейсом на основе этого примера доступен на GitHub.
Ответ 4
Вы также можете исправить это в фотошопе. У меня есть CC2015, но я уверен, что это то же самое для всех версий.
Ответ 5
Чтобы добавить Гленну отличный ответ, вот что я сделал, чтобы найти, какие файлы были неисправны:
И для каждого из них запустите mogrify, чтобы исправить их.
Это предотвращает изменение фиксации каждого png файла в репозитории, если только некоторые из них были изменены. Плюс у него есть преимущество, чтобы показать, какие именно файлы были неисправны.
Я проверял это на Windows с консолью Cygwin и оболочкой zsh. Еще раз спасибо Гленну, который поставил большую часть вышеупомянутого, я просто добавляю ответ, поскольку его обычно легче найти, чем комментарии 🙂
Ответ 6
Благодаря фантастическому ответу Гленна, я использовал функциональность ImageMagik «mogrify *.png». Однако у меня были изображения, спрятанные в подпапках, поэтому я использовал этот простой скрипт Python, чтобы применить его ко всем изображениям во всех подпапках и подумал, что это может помочь другим:
Ответ 7
Существует более простой способ решить эту проблему с Mac OS и Homebrew:
Установите homebrew, если он еще не установлен
или сделать это с каждым файлом в текущем каталоге:
Он создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.
Ответ 8
некоторая справочная информация об этом:
Некоторые изменения в версии libpng 1.6+ вызывают предупреждение или даже неправильно работают с исходным профилем HP/MS sRGB, к следующему stderr: предупреждение libpng: iCCP: известный неправильный sRGB profile В старом профиле используется точка белого D50, где D65 является стандартным. Этот профиль не редкость, он используется Adobe Photoshop, хотя по умолчанию он не был встроен в изображения.
Обнаружение ошибок в некоторых кусках улучшилось; в частности, iCCP chunk reader теперь делает довольно полную проверку базового формата. Некоторые плохие профили, которые были ранее приняты, теперь отвергаются, в в частности, очень старый сломанный профиль Microsoft sRGB. Спецификация PNG что в изображениях могут отображаться только профили оттенков серого цвет 0 или 4, и даже если изображение содержит только серый цвет пикселей, только изображения RGB могут отображаться на изображениях с типом цвета 2, 3, или 6, теперь применяется. Блоку sRGB разрешено появляться в изображениях с любым типом цвета.
Ответ 9
Попробовав пару предложений на этой странице, я закончил использование решения pngcrush. Вы можете использовать bash script ниже для рекурсивного обнаружения и исправления плохих png-профилей. Просто передайте ему полный путь к каталогу, который вы хотите найти для png файлов.
Ответ 10
Используя программу просмотра изображений IrfanView в Windows, я просто сохранил изображение PNG, и это исправило проблему.
Ответ 11
Расширяя решение friederbluemle, загрузите pngcrush и затем используйте код, подобный этому, если вы запускаете его для нескольких файлов png
здесь все png файлы, относящиеся к проектам, находятся в 1 папке.
Ответ 12
Вот смехотворный ответ грубой силы:
Я изменил gradlew script. Вот моя новая команда exec в конце файла в
Предупреждение libpng: iCCP: известен неправильный профиль sRGB
Я пытаюсь загрузить изображение PNG с помощью SDL, но программа не работает, и эта ошибка появляется в консоли
Предупреждение libpng: iCCP: известен неправильный профиль sRGB
Почему появляется это предупреждение? Что я должен сделать, чтобы решить эту проблему?
Libpng-1.6 более строг в проверке профилей ICC, чем предыдущие версии. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.
Некоторые приложения обрабатывают предупреждения как ошибки; Если вы используете такое приложение, вы должны удалить чанк. Вы можете сделать это с любым из множества редакторов PNG, таких как ImageMagick’s
Чтобы удалить недействительный кусок iCCP из всех файлов PNG в папке (каталоге), вы можете использовать mogrify из ImageMagick:
Это требует, чтобы ваш ImageMagick был собран с libpng16. Вы можете легко проверить это, запустив:
Если вы хотите выяснить, какие файлы необходимо исправить, а не обрабатывать их вслепую, вы можете запустить
Бинарные выпуски ImageMagick находятся здесь
Для проектов Android (Android Studio) перейдите в res папку.
Используйте pngcrush для удаления неправильного профиля sRGB из файла png:
В выводе консоли вы должны увидеть Removed the sRGB chunk и, возможно, больше сообщений об удалении чанка. В итоге вы получите меньший, оптимизированный файл PNG. Поскольку команда перезапишет исходный файл, обязательно создайте резервную копию или используйте контроль версий.
Решение
Неправильный профиль может быть исправлен с помощью:
пример
Вот минимальный пример, который я написал на C ++ для демонстрации того, как реализовать предложенное решение:
ОБНОВЛЕНИЕ ОТ 05.12.2019: Ответ был и остается в силе, однако в приложении с графическим интерфейсом, которым я поделился на GitHub, была ошибка, из-за которой выходное изображение было пустым. Я только что исправил это и извиняюсь за неудобство!
Чтобы добавить отличный ответ Гленна, вот что я сделал, чтобы найти, какие файлы были неисправны:
И для каждого из них запустите mogrify, чтобы исправить их.
Это предотвращает изменение фиксации каждого png-файла в хранилище, если только некоторые из них были изменены. Плюс у него есть преимущество, чтобы показать, какие именно файлы были неисправны.
Я протестировал это на Windows с консолью Cygwin и оболочкой zsh. Еще раз спасибо Гленну, который поставил большую часть всего вышеперечисленного, я просто добавляю ответ, поскольку его обычно легче найти, чем комментарии 🙂
Существует более простой способ решить эту проблему с Mac OS и Homebrew:
Установите homebrew, если он еще не установлен
или сделать это с каждым файлом в текущем каталоге:
Он создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.
Попробовав пару предложений на этой странице, я решил использовать решение pngcrush. Вы можете использовать скрипт bash ниже для рекурсивного обнаружения и исправления плохих профилей png. Просто передайте ему полный путь к каталогу, в котором вы хотите искать файлы png.
некоторая справочная информация по этому вопросу:
Некоторые изменения в libpng версии 1.6+ приводят к тому, что он выдает предупреждение или даже не работает правильно с исходным профилем HP / MS sRGB, что приводит к следующему stderr: предупреждение libpng: iCCP: известен неправильный профиль sRGB Старый профиль использует точку белого D50, где D65 является стандартным. Этот профиль нередко используется Adobe Photoshop, хотя по умолчанию он не был встроен в изображения.
Обнаружение ошибок в некоторых чанках улучшилось; в частности, программа чтения чанков iCCP теперь выполняет довольно полную проверку основного формата. Некоторые плохие профили, которые были ранее приняты, теперь отклоняются, в частности, очень старый сломанный профиль Microsoft / HP sRGB. Требование спецификации PNG о том, что в изображениях с цветным типом 0 или 4 могут появляться только оттенки серого, и что даже если изображение содержит только серые пиксели, в изображениях с цветным типом 2, 3 или 6 могут появляться только профили RGB. Кусок sRGB может появляться на изображениях с любым типом цвета.
libpng warning: iCCP: known incorrect sRGB profile
I’m trying to load a PNG image using SDL but the program doesn’t work and this error appears in the console
libpng warning: iCCP: known incorrect sRGB profile
Why does this warning appear? What should I do to solve this problem?
14 Answers 14
Libpng-1.6 is more stringent about checking ICC profiles than previous versions. You can ignore the warning. To get rid of it, remove the iCCP chunk from the PNG image.
Some applications treat warnings as errors; if you are using such an application you do have to remove the chunk. You can do that with any of a variety of PNG editors such as ImageMagick’s
To remove the invalid iCCP chunk from all of the PNG files in a folder (directory), you can use mogrify from ImageMagick:
This requires that your ImageMagick was built with libpng16. You can easily check it by running:
If you’d like to find out which files need to be fixed instead of blindly processing all of them, you can run
Binary Releases of ImageMagick are here
For Android Projects (Android Studio) navigate into res folder.
Use pngcrush to remove the incorrect sRGB profile from the png file:
Solution
The incorrect profile could be fixed by:
Note: This solution uses the Qt Library.
Example
Here is a minimal example I have written in C++ in order to demonstrate how to implement the proposed solution:
The complete source code of a GUI application based on this example is available on GitHub.
UPDATE FROM 05.12.2019: The answer was and is still valid, however there was a bug in the GUI application I have shared on GitHub, causing the output image to be empty. I have just fixed it and apologise for the inconvenience!
You can also just fix this in photoshop.
To add to Glenn’s great answer, here’s what I did to find which files were faulty:
And for each of those, run mogrify on it to fix them.
Doing this prevents having a commit changing every single png file in the repository when only a few have actually been modified. Plus it has the advantage to show exactly which files were faulty.
I tested this on Windows with a Cygwin console and a zsh shell. Thanks again to Glenn who put most of the above, I’m just adding an answer as it’s usually easier to find than comments 🙂
Thanks to the fantastic answer from Glenn, I used ImageMagik’s «mogrify *.png» functionality. However, I had images buried in sub-folders, so I used this simple Python script to apply this to all images in all sub-folders and thought it might help others:
There is an easier way to fix this issue with Mac OS and Homebrew:
Install homebrew if it is not installed yet
or to do it with every file in the current directory:
It will create a fixed copy for each png file in the current directory and put it in the the tmp subdirectory. After that, if everything is OK, you just need to override the original files.
Another tip is to use the Keynote and Preview applications to create the icons. I draw them using Keynote, in the size of about 120×120 pixels, over a slide with a white background (the option to make polygons editable is great!). Before exporting to Preview, I draw a rectangle around the icon (without any fill or shadow, just the outline, with the size of about 135×135) and copy everything to the clipboard. After that, you just need to open it with the Preview tool using «New from Clipboard», select a 128×128 pixels area around the icon, copy, use «New from Clipboard» again, and export it to PNG. You won’t need to run the pngfix tool.