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

Libpng warning: iCCP: known incorrect sRGB profile Python PyGame Решение и ответ на вопрос 2712573

stranger2287

1 / 0 / 1

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

Сообщений: 34

1

16.10.2020, 17:19. Показов 5101. Ответов 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



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

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

Поделиться

Ещё вопросы

  • 0распределить количество нулей в любом месте сетки
  • 0Использование пользовательской страницы просмотра для предварительного просмотра изображения в Sonata Admin в проекте Symfony 2
  • 1Создание метода с использованием C # в ASP.NET с синтаксисом Razor
  • 1JS Promise wait для обновления токена
  • 0Неправильное поведение с кодом AngularJS
  • 1дизайн классов и конструкторов для программы арифметических выражений на Java
  • 0JQuery AJAX вызов с codeigniter
  • 1Создайте словарь подсчета категорий для столбца панд
  • 1Ленивая оценка numpy.max
  • 1Многопоточный код для работы с использованием настроенного количества потоков
  • 1App Engine gcloud: Не удается найти файлы Python в домашнем каталоге, но они работают?
  • 0Кнопка «Назад» и слайд-шоу
  • 0Дизайн материала не работает с угловыми состояниями
  • 0Возникли проблемы с проверкой, существует ли URL PHP
  • 1Discord — BOT отправляет личное сообщение
  • 1Dropzonejs вызывает ошибку и отменяет загрузку
  • 1Создание Discord Bot в Python: Как сделать разговор о переключателе для ChatBot
  • 1Java — Ошибка не может найти символ
  • 1Добавление нового настраиваемого поля определенного типа MIME в приложении «Контакты»
  • 0Как скрыть атрибут метки опции выбора?
  • 0MySql: динамическое добавление столбцов, столько же строк, сколько в другой таблице
  • 0извлечь список функций в заголовочном файле
  • 0Транспортир не работает с Firefox 40.0.2
  • 0Отображение имени отдела во внешнем запросе — sql
  • 1производительность и объем памяти функций стрелок
  • 1Как извлечь конкретное число в строку, окруженную цифрами и текстом C #
  • 0Время Python / MySQL
  • 0Ошибка: [ng: areq] Аргумент не является функцией, получил неопределенный
  • 0Получить JSON ошибку при звонке с угловой с Zend Framework 1
  • 0php curl_multi_exec () занимает больше времени, чем установлено в CURLOPT_TIMEOUT_MS
  • 1Получение уникального массива из сервиса в Angular
  • 1Java заставляет спящие потоки работать в пуле потоков
  • 1JavaScript RegEx (0-100), но не ведущий 0
  • 0обратное преобразование Фурье, ручное слияние реального и мнимого
  • 0php jquery отправляет параметры сообщения на другую страницу php
  • 0Функция маршрутизатора узла .delete возвращает 404 Not Found?
  • 1Обновлять словарь за итерацию, а не за весь
  • 0извлекать невыпуклую оболочку из результата суммы Минковского с помощью наддува
  • 1Вставка значений в базу данных SQL Server
  • 1Нерыночная публикация контента
  • 0Вызов базового метода Zurb Foundation 4 содержит код, конфликтующий с Prototype.js
  • 0Выбор удостоверения Outlook Express с использованием кода
  • 0как получить атрибут sessioncope в HTML
  • 0Использование jQuery для определения индекса ссылки на основе текста ссылки
  • 1Android: перечислить все блокировки в системе
  • 0индекс текущего выбранного элемента в массиве
  • 1Как использовать System.Windows.Controls.WebBrowser без его отображения?
  • 1файл не может быть удален даже после закрытия потоков
  • 1Vue.js — как визуализировать вложенный компонент в этом простом примере?
  • 0CKEDITOR — используйте клавишу Backspace для выделения текста

Сообщество Overcoder

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)

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

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

  • Libpng warning iccp crc error
  • Libmtp error could not send object
  • Libmmd dll cinema 4d как исправить
  • Libmain so ошибка
  • Libguestfs error mount unsupported filesystem type

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

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