Libpng warning iccp known incorrect srgb profile python как исправить

ну, вы можете игнорировать предупреждение. Я использую ImageMagick для изменения размера... Вопрос по теме: python, pygame.

Когда я запускаю свою программу, это дает мне следующее предупреждение:

libpng warning: iCCP: known incorrect sRGB profile

Я знаю, почему это вызвано, sRGB — это то, что он хочет, но я использую Adobe Photoshop RGB.

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

Любая помощь будет принята с благодарностью!

(Пожалуйста, не просите меня показать мой код, мой код не имеет ничего общего с этой ситуацией)

20 июнь 2014, в 20:44

Поделиться

Источник

1 ответ

ну, вы можете игнорировать предупреждение.
Я использую ImageMagick для изменения размера изображения, а для некоторого png файла следующий код будет генерировать исключение:
iCCP: известный неправильный профиль sRGB `@@warning/png.c/MagickPNGWarningHandler/1830

Blob ablob(cont.data(), cont.size()); // cont is the png file content.
Image image;
image.read(ablob);
image.resize( Geometry(100, 100) );

Как говорится, это просто предупреждение, вы можете поместить image.read(ablob) в блок try {} catch {} и игнорировать исключение. Изображение объекта теперь содержит интегрированные данные png и может управляться правильно.

sparkling
30 дек. 2014, в 06:40

Поделиться

Ещё вопросы

  • 1группировка данных zingchart и выборка вниз
  • 0добавить в переменную по переключателю кнопку php
  • 1Как общаться с пружинной паутиной
  • 0freopen_s («conout $») и fclose
  • 0тип ввода = щелчок файла не запускается через jquery
  • 0Угловое наследование JS-контроллера
  • 0Можно ли стилизовать собственные полосы прокрутки в gwt, без определения пользовательских полос прокрутки и без использования ScrollPanel или CustomScrollPanel?
  • 1Фильтрация данных по категориям для статистического теста в Python
  • 0Символы не найдены для архитектуры armv7 при импорте файла cpp из примера проекта iOS
  • 1Android HAS_PHONE_NUMBER
  • 1Есть ли способы запустить Android на XWindows?
  • 1Кнопка JS не обновляет innerhtml
  • 0JQuery экранная клавиатура по запросу
  • 1Команда system R и вывод оболочки различны
  • 0пытаюсь перенаправить пользователя на свой профиль после регистрации на моем сайте
  • 1Python Добавить список диктов
  • 0Обнаружение жеста смахивания с скачком движения
  • 1Пространственные кнопки Image в Android
  • 1Как получить заголовок «X-Forwarded-Proto» в приложении REST?
  • 1Недопустимое имя переменной Statsmodels (Patsy) / объект ‘Series’ не вызывается Ошибка
  • 1Android и область использования
  • 1Поле benchmarkRun должно реализовывать MethodRule
  • 0Jquery скрипт занимает очень очень много времени
  • 0Будет ли какое-либо влияние на пропускную способность пользователей, если я буду использовать AngularJS и JQuery одновременно?
  • 1Android: проблема с использованием нескольких контекстных меню
  • 1Как добавить TabBar в Android
  • 0OpenGL переключение между орто и перспективой
  • 1Python запросы — Put игнорирует загрузку файлов
  • 1Обнаружение символов, которые не заключены в двойные кавычки (регулярное выражение)
  • 0Ошибка $ digest уже выполняется — с пользовательской директивой — не исправлено $ timeout
  • 1Десериализатор JSON.Net не генерирует исключение при передаче недопустимого значения для объекта
  • 0c ++: использовать тип в качестве ключа для карты / словаря?
  • 0получить имя функции c ++ из! DllRegisterServer + нотации 0x3ebfa для решения головоломки «бесконечное ожидание в критической секции»
  • 1почему члены данных инициализируются значениями по умолчанию, а локальные переменные — нет?
  • 0Раскройте PHP через HTTPRequest
  • 0Я хочу изменить ключ многомерного массива
  • 1Не можете найти источник?
  • 1Как отменить выбор области «Использовать» в таблице электронных таблиц после использования функции выбора
  • 0Как открывать ссылки только в новом окне, если установлен флажок
  • 0Невозможно загрузить изображения, используя SDL_LoadBMP
  • 1C # Обновление метки с изображением
  • 1Необходим ли bindService для локального (того же процесса) сервиса?
  • 0Автоматический скрипт php для определения количества просмотров вашей страницы с помощью Google Analytics
  • 0перебрать 10 дней и сохранить каждую дату в массиве
  • 1Создать объект, используя подстроку в Javascript
  • 0Как установить положение центра изображения с отзывчивым в CSS?
  • 0Jasperstarter Использование
  • 0PHP эхо-форма отправки
  • 0Связать пункты меню с различными виджетами в Qt Creator
  • 0HTML, рост 100%

Сообщество Overcoder

stranger2287

1 / 0 / 1

Регистрация: 03.05.2020

Сообщений: 34

1

16.10.2020, 17:19. Показов 5140. Ответов 3

Метки icc, rgb, Игра, проблема (Все метки)


Пытаюсь написать мини игру, подключил спрайты, запуска, чтобы проверить, что они выводятся на экран и тут ошибка:
libpng warning: iCCP: known incorrect sRGB profile
КОД:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import pygame
 
pygame.init()
win = pygame.display.set_mode((500, 500))
 
pygame.display.set_caption("Cubes Game")
 
walkRight = [pygame.image.load('right1.png'),
pygame.image.load('right2.png'), pygame.image.load('right3.png'),
pygame.image.load('right4.png'), pygame.image.load('right6.png'),
pygame.image.load('right7.png')]
 
walkLeft = [pygame.image.load('left1.png'),
pygame.image.load('left2.png'), pygame.image.load('left3.png'),
pygame.image.load('left5.png'), pygame.image.load('left6.png'),
pygame.image.load('left7.png')]
 
bg = pygame.image.load('bg.png')
playerStand = pygame.image.load('left1.png')
 
x = 50
y = 425
width = 60
height = 71
speed = 5
 
isJump = False
jumpCount = 1
 
left = False
right = False
animCount = 0
 
def drawWindow():
    global animCount
    win.blit(bg, (0, 0))
    pygame.display.update()
 
run = True
while run:
    pygame.time.delay(50)
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
 
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and x > 5:
        x -= speed
    if keys[pygame.K_RIGHT] and x < 500 - width - 15:
        x += speed
    if not(isJump):
 
        if keys[pygame.K_SPACE]:
            isJump = True
    else:
        if jumpCount >= -10:
            if jumpCount < 0:
                y += (jumpCount ** 2)/2
            else:
                y -= (jumpCount ** 2)/2
            jumpCount -= 1
        else:
            isJump = False
            jumpCount = 10
 
 
 
pygame.quit()

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



1 / 0 / 1

Регистрация: 01.06.2019

Сообщений: 61

17.10.2020, 23:05

2

Подозреваю что проблема в этом месте win.blit(bg, (0, 0)) Цвет состоит из 3 значений RED GREEN BLUE а у вас только 2 значения, вот он и ругается.



0



1 / 0 / 1

Регистрация: 03.05.2020

Сообщений: 34

23.10.2020, 16:06

 [ТС]

3

Kxarog, не, здесь (0, 0) это координаты откуда начинается прорисовываться задний фон



0



1 / 0 / 1

Регистрация: 01.06.2019

Сообщений: 61

24.10.2020, 12:56

4

Да тупанул посмотрел мельком, посмотрел повнимательнее скопировал ваш код, пришлось заливать свои текстуры(я теперь понимаю почему tooru ругался на меня когда я выкладывал код без текстур) У меня такой ошибки нет(хотя код все равно не рабочий) + погуглив подозреваю что дело в ваших текстурах. Я не спец (да че уж там полный нубас), но могу предложить вам сделать 2 варианта
1) Пересоздать ваши картинки в пнг
2) Попробовать загрузить картинки не в пнг формате а в другом
+ как я уже сказа код все равно не рабочий(будет тупо черный экран). И вот тут самое веселое, оказывается я уже отвечал на одну тему почти с таким же кодом
Проблема с добавлением фона и персонажей
Прям судьбоносная встреча…



0



Вопрос:

Я пытаюсь загрузить изображение PNG с помощью SDL, но программа не работает, и эта ошибка появляется в консоли

Предупреждение libpng: iCCP: известен неправильный профиль sRGB

Почему появляется это предупреждение? Что я должен сделать, чтобы решить эту проблему?

Лучший ответ:

Libpng-1.6 более строг в проверке профилей ICC, чем предыдущие версии. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.

Некоторые приложения обрабатывают предупреждения как ошибки; Если вы используете такое приложение, вы должны удалить чанк. Вы можете сделать это с любым из множества редакторов PNG, таких как ImageMagick’s

convert in.png out.png

Чтобы удалить недействительный кусок iCCP из всех файлов PNG в папке (каталоге), вы можете использовать mogrify из ImageMagick:

mogrify *.png

Это требует, чтобы ваш ImageMagick был собран с libpng16. Вы можете легко проверить это, запустив:

convert -list format | grep PNG

Если вы хотите выяснить, какие файлы необходимо исправить, а не обрабатывать их вслепую, вы можете запустить

pngcrush -n -q *.png

где -n означает не переписывать файлы, а -q означает подавить большую часть вывода, за исключением предупреждений. Извините, в pngcrush пока нет возможности подавить все, кроме предупреждений.


Бинарные выпуски ImageMagick находятся здесь


Для проектов Android (Android Studio) перейдите в папку res.

Например:

C:{your_project_folder}appsrcmainresdrawable-hdpimogrify *.png

Ответ №1

Используйте pngcrush для удаления неправильного профиля sRGB из файла png:

pngcrush -ow -rem allb -reduce file.png
  • -ow перезапишет входной файл
  • -rem allb удалит все вспомогательные фрагменты, кроме tRNS и gAMA
  • -reduce выполняет уменьшение цвета без потерь или глубины цвета

В выводе консоли вы должны увидеть Removed the sRGB chunk и, возможно, больше сообщений об удалении чанка. В итоге вы получите меньший, оптимизированный файл PNG. Поскольку команда перезапишет исходный файл, обязательно создайте резервную копию или используйте контроль версий.

Ответ №2

Решение

Неправильный профиль может быть исправлен с помощью:

  1. Открытие изображения с неправильным профилем с помощью QPixmap :: load
  2. Сохранение изображения обратно на диск (уже с правильным профилем) с помощью QPixmap :: save

Примечание. В этом решении используется библиотека Qt.

пример

Вот минимальный пример, который я написал в C++, чтобы продемонстрировать, как реализовать предложенное решение:

QPixmap pixmap;
pixmap.load("badProfileImage.png");

QFile file("goodProfileImage.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");

Полный исходный код приложения с графическим интерфейсом на основе этого примера доступен на GitHub.

Ответ №3

Вы также можете исправить это в фотошопе… У меня есть CC2015, но я уверен, что это то же самое для всех версий.

  • Откройте файл .png.
  • Файл → Сохранить как и в диалоговом окне, который открывается снимите флажок “ICC-профиль: sRGB IEC61966-2.1”
  • Снимите флажок “Как копировать”.
  • Смело сохраняйте свой оригинальный .png.
  • Двигайтесь своей жизнью, зная, что вы удалили из этого всего лишь немного зла.

Ответ №4

Чтобы добавить Гленну отличный ответ, вот что я сделал, чтобы найти, какие файлы были неисправны:

find . -name "*.png" -type f -print0 | xargs 
-0 pngcrush_1_8_8_w64.exe -n -q > pngError.txt 2>&1

Я использовал find и xargs, потому что pngcrush не смог обработать множество аргументов (которые были возвращены **/*.png). -print0 и -0 необходимы для обработки имен файлов, содержащих пробелы.

Затем iCCP: Not recognizing known sRGB profile that has been edited поиск в выходных данных следующих строк: iCCP: Not recognizing known sRGB profile that has been edited.

./Installer/Images/installer_background.png:
Total length of data found in critical chunks            =     11286
pngcrush: iCCP: Not recognizing known sRGB profile that has been edited

И для каждого из них запустите mogrify, чтобы исправить их.

mogrify ./Installer/Images/installer_background.png

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

Я проверял это на Windows с консолью Cygwin и оболочкой zsh. Еще раз спасибо Гленну, который поставил большую часть вышеупомянутого, я просто добавляю ответ, поскольку его обычно легче найти, чем комментарии 🙂

Ответ №5

Благодаря фантастическому ответу Гленна, я использовал функциональность ImageMagik “mogrify *.png”. Однако у меня были изображения, спрятанные в подпапках, поэтому я использовал этот простой скрипт Python, чтобы применить его ко всем изображениям во всех подпапках и подумал, что это может помочь другим:

import os
import subprocess

def system_call(args, cwd="."):
print("Running '{}' in '{}'".format(str(args), cwd))
subprocess.call(args, cwd=cwd)
pass

def fix_image_files(root=os.curdir):
for path, dirs, files in os.walk(os.path.abspath(root)):
# sys.stdout.write('.')
for dir in dirs:
system_call("mogrify *.png", "{}".format(os.path.join(path, dir)))


fix_image_files(os.curdir)

Ответ №6

Существует более простой способ решить эту проблему с Mac OS и Homebrew:

Установите homebrew, если он еще не установлен

$brew install libpng
$pngfix --strip=color --out=file2.png file.png

или сделать это с каждым файлом в текущем каталоге:

mkdir tmp; for f in ./*.png; do pngfix --strip=color --out=tmp/"$f" "$f"; done

Он создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.

Другой совет – использовать приложения Keynote и Preview для создания значков. Я рисую их с помощью Keynote, размером около 120×120 пикселей, поверх слайда с белым фоном (возможность сделать редактируемые полигоны великолепной!). Перед экспортом в Preview я рисую прямоугольник вокруг значка (без заливки или тени, только контур, размером около 135×135) и копирую все в буфер обмена. После этого вам просто нужно открыть его с помощью инструмента “Просмотр”, используя “Новый из буфера обмена”, выделить область размером 128×128 пикселей вокруг значка, скопировать, снова использовать “Новый из буфера обмена” и экспортировать его в PNG. Вам не нужно запускать инструмент pngfix.

Ответ №7

некоторая справочная информация об этом:

Некоторые изменения в версии libpng 1.6+ вызывают предупреждение или даже неправильно работают с исходным профилем HP/MS sRGB, к следующему stderr: предупреждение libpng: iCCP: известный неправильный sRGB profile В старом профиле используется точка белого D50, где D65 является стандартным. Этот профиль не редкость, он используется Adobe Photoshop, хотя по умолчанию он не был встроен в изображения.

(источник: https://wiki.archlinux.org/index.php/Libpng_errors)

Обнаружение ошибок в некоторых кусках улучшилось; в частности, iCCP chunk reader теперь делает довольно полную проверку базового формата. Некоторые плохие профили, которые были ранее приняты, теперь отвергаются, в в частности, очень старый сломанный профиль Microsoft sRGB. Спецификация PNG что в изображениях могут отображаться только профили оттенков серого цвет 0 или 4, и даже если изображение содержит только серый цвет пикселей, только изображения RGB могут отображаться на изображениях с типом цвета 2, 3, или 6, теперь применяется. Блоку sRGB разрешено появляться в изображениях с любым типом цвета.

(источник: https://forum.qt.io/topic/58638/solved-libpng-warning-iccp-known-incorrect-srgb-profile-drive-me-nuts/16)

Ответ №8

Попробовав пару предложений на этой странице, я закончил использование решения pngcrush. Вы можете использовать bash script ниже для рекурсивного обнаружения и исправления плохих png-профилей. Просто передайте ему полный путь к каталогу, который вы хотите найти для png файлов.

fixpng "/path/to/png/folder"

script:

#!/bin/bash

FILES=$(find "$1" -type f -iname '*.png')

FIXED=0
for f in $FILES; do
WARN=$(pngcrush -n -warn "$f" 2>&1)
if [[ "$WARN" == *"PCS illuminant is not D50"* ]] || [[ "$WARN" == *"known incorrect sRGB profile"* ]]; then
pngcrush -s -ow -rem allb -reduce "$f"
FIXED=$((FIXED + 1))
fi
done

echo "$FIXED errors fixed"

Ответ №9

Используя программу просмотра изображений IrfanView в Windows, я просто сохранил изображение PNG, и это исправило проблему.

Ответ №10

Расширяя решение friederbluemle, загрузите pngcrush и затем используйте код, подобный этому, если вы запускаете его для нескольких файлов png

path =r"C:\project\project\images" # path to all .png images
import os

png_files =[]

for dirpath, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".png"):
png_files.append(os.path.join(dirpath, x))

file =r'C:\Users\user\Downloads\pngcrush_1_8_9_w64.exe' #pngcrush file


for name in png_files:
cmd = r'{} -ow -rem allb -reduce {}'.format(file,name)
os.system(cmd)

здесь все png файлы, относящиеся к проектам, находятся в 1 папке.

Ответ №11

Вот смехотворный ответ грубой силы:

Я изменил gradlew script. Вот моя новая команда exec в конце файла в

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" **| grep -v "libpng warning:"**

ibpng-1.6 более жестко проверяет профили ICC, чем предыдущие. Вы можете игнорировать предупреждение. Чтобы избавиться от него, удалите кусок iCCP из изображения PNG.

Некоторые приложения (в моём случае OpenGL) рассматривают предупреждения как ошибки; если вы используете такое приложение, вам нужно удалить iCCP кусок из изображения PNG. Это можно сделать с помощью любого из множества редакторов PNG (по правде говоря стандартный paint в windows у меня не смог). Пример редактор ImageMagick’s : convert in.png out.png.

Что бы удалить дефектный кусок (iCCP) из всех файлов PNG лежащих в директории можно воспользоваться командой mogrify *.png при условии, что ваш ImageMagick был собран с помощью libpng16(запустите такой командой convert -list format | grep PNG что бы быть уверренным в том что собираете в «верных» настройках).

Если вы хотите узнать, какие файлы нужно исправлять, а не слепо обрабатывать их все, вы можете запустить pngcrush -n -q *.png, где -n означает, что вы не переписываете файлы и - q означает подавление «технической» части вывода, за исключением предупреждений. К сожалению, в pngcrush еще нет опции для подавления всех «технических» сообщений, кроме предупреждений.


Бинарные релизы ImageMagick здесь


Для Android-проектов (Android Studio) перейдите в папку res.

Пример: C:AndroidProjects{your_project_folder}appsrcmainresdrawable-hdpimogrify *.png


Используйте pngcrush чтобы удалить неправильный профиль sRGB из файла png:

 pngcrush -ow -rem allb -reduce file.png 
  • ow будет перезаписывать входной файл
  • rem allb удалит все вспомогательные куски, кроме tRNS и gAMA
  • reduce сохраняет цвет и глубину

На выходе консоли вы должны увидеть Removed the sRGB chunk. , и, возможно, больше сообщений об удалении кусков iCCP. В конечном итоге вы получите меньший оптимизированный файл png. Когда команда перезапишет исходный файл, обязательно создайте резервную копию или контроль версий (гит_хаб, тартуисеХГ и т.д.).


Решение (мне это вариант нравится потому что он в Qt-е :3 )

Не корректный файл может быть исправлен :

  1. Открываем картинку(некорректный файл) с помощью QPixmap::load
  2. Сохраняем картинку(уже корректный файл) на диск с помощью QPixmap::save

Примечание это решение использует Qt билиотеку.

Пример:

Вот минимальный пример, который я написал на C++, чтобы продемонстрировать, как реализовать предлагаемое решение:

QPixmap pixmap;
pixmap.load("badProfileImage.png");

QFile file("goodProfileImage.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");

Полный исходный код «GUI приложение», основано на этом примере, доступно в GitHub.


Вы можете исправить это в фотошопе…. У меня есть CC2015, но я уверен, что такая возможность присутствует во всех версиях.

  1. Откройте ваш .png файл
  2. File -> Save As и в открывшемся диалоговом окне снимите флажок «ICC Profile: sRGB IEC61966-2.1»
  3. снимите флажок «As a Copy»
  4. Смело сохраняйте свой «новый» оригинальный .png.
  5. Двигайтесь своей жизнью, зная, что вы удалили маленький кусочек зла из этого мира.

Я использовал функцию «mogrify * .png» ImageMagik. Однако у меня были изображения, зарытые в под папках, поэтому я использовал этот простой скрипт Python для применения ко всем изображениям во всех под папках и думал, что он может помочь другим людям:

import os
import subprocess

def system_call(args, cwd="."):
    print("Running '{}' in '{}'".format(str(args), cwd))
    subprocess.call(args, cwd=cwd)
    pass

def fix_image_files(root=os.curdir):
    for path, dirs, files in os.walk(os.path.abspath(root)):
        # sys.stdout.write('.')
        for dir in dirs:
            system_call("mogrify *.png", "{}".format(os.path.join(path, dir)))


fix_image_files(os.curdir)

Используя первый метод решения сего вопроса изменил вид запроса :

find . -name "*.png" -type f -print0 | xargs -0 pngcrush_1_8_8_w64.exe -n -q > pngError.txt 2>&1

Я использовал find и xargs, потому что pngcrush не мог обрабатывать множество аргументов (которые были возвращены ** / *. Png). Параметры -print0 и -0 необходимы для обработки имен файлов, содержащих пробелы.

Затем выполните поиск в вывод для этих строк: iCCP: Not recognizing known sRGB profile that has been edited.

./Installer/Images/installer_background.png:
Total length of data found in critical chunks = 11286
pngcrush: iCCP: Not recognizing known sRGB profile that has been edited

И для каждого из них, запустить mogrify, чтобы исправить их.

mogrify ./Installer/Images/installer_background.png

Это предотвращает возможность индексации будто бы все png файлы изменены, когда только некоторые из них действительно были изменены. Кроме того, у этого метода есть преимущество, чтобы точно показать, какие файлы были неисправны.

Я тестировал это на Windows с консолью Cygwin и оболочкой zsh. И еще спасибо первому варианту(автор которого глен ) за точное пояснение как эту проблему можно решить.


вот более простой способ исправить эту проблему с Mac OS с помощью Homebrew:

> install homebrew if it is not installed yet
$brew install libpng
$pngfix --strip=color --out=file2.png file.png

или сделать с каждым файлом в текущем каталоге:

mkdir tmp; for f in ./*.png; do pngfix --strip=color --out=tmp/"$f" "$f"; done

Homebrew создаст фиксированную копию для каждого файла png в текущем каталоге и поместит его в подкаталог tmp. После этого, если все в порядке, вам просто нужно переопределить исходные файлы.

Иной совет- использовать приложения Keynote и Preview для создания иконок. Я рисую их, используя Keynote, размером около 120×120 пикселей, над слайдом с белым фоном (опция для редактирования многоугольников — это замечательно!). Перед экспортом в Preview я рисую прямоугольник вокруг значка (без заливки или тени, только контур размером около 135×135) и скопируйте все в буфер обмена. После этого вам просто нужно открыть его с помощью инструмента «Просмотр» с помощью «Создать из буфера обмена», выбрать область размером 128×128 пикселей вокруг значка, скопировать, снова использовать «Создать из буфера обмена» и экспортировать его в PNG. Вам не нужно будет запускать инструмент pngfix.


Используя программу просмотра изображений IrfanView в Windows, я просто сохранил изображение PNG и исправил проблему.


Попробовав пару предложений на этой странице, я остановился на использовании pngcrush. Вы можете использовать скрипт bash ниже для рекурсивного обнаружения и исправления плохих профилей png. Просто передайте ему полный путь к каталогу, который вы хотите найти для png-файлов.

fixpng "/path/to/png/folder"

скрипт:

#!/bin/bash

FILES=$(find "$1" -type f -iname '*.png')

FIXED=0
for f in $FILES; do
    WARN=$(pngcrush -n -warn "$f" 2>&1)
    if [[ "$WARN" == *"PCS illuminant is not D50"* ]] || [[ "$WARN" == *"known incorrect sRGB profile"* ]]; then
        pngcrush -s -ow -rem allb -reduce "$f"
        FIXED=$((FIXED + 1))
    fi
done

echo "$FIXED errors fixed"

некоторые справочные данные по этому поводу:

Некоторые изменения в версии libpng 1.6+ приводят к тому, что он
выдаёт предупреждение или даже неправильно работает с исходным
профилем HP / MS sRGB, что приводит к следующему предупреждению
libpng warning: iCCP: known incorrect sRGB profile . Старый
профиль использует стандарт белой точки D50, когда в новом стандарте D65 является белой точкой .
Этот профиль не редкость, используеться в Adobe Photoshop, хотя он по
умолчанию не был встроен в изображения.

(источник: https://wiki.archlinux.org/index.php/Libpng_errors)

Обнаружение ошибок было улучшено в некоторых элементах.в частности, читатель
iCCP элемента теперь делает довольно полную проверку базового
формата.Некоторые неудачные профили, которые были ранее приняты,
теперь отклонены, в частности, очень старый сломанный профиль
Microsoft / HP sRGB. Требование спецификации PNG, что только
изображения с оттенками серого могут отображаться на изображениях с
типом цвета 0 или 4, и даже если изображение содержит только серые
пиксели, теперь применяются только профили RGB в изображениях с типом
цвета 2, 3 или 6. Элементу sRGB разрешено появляться на изображениях с
любым типом цвета.

(источник: https://forum.qt.io/topic/58638/solved-libpng-warning-iccp-known-incorrect-srgb-profile-drive-me-nuts/16)

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Lgup error 0x2bc
  • Lg multi v коды ошибок
  • Lexus ошибка p1656
  • Lexus rx300 ошибка p0325
  • Lexus is 250 error 4

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии