В настоящее время у меня нет примера изображения, но, по сути, если я столкнулся с ситуацией, когда изображения загружаются, а затем сохраняются без изменений, меняет яркость. Я прочитал проблему, в которой это могло быть связано с тем, что изображение использует режим CMYK, но изображения открываются в режиме RGB. (Я использую изображения PNG, которые снова являются кадрами, извлеченными из видео с помощью ffmpeg). После открытия и последующего сохранения изображения его размер увеличивается с 1,6 МБ до 1,2 МБ. Быстрый пример кода:

from PIL import Image  # Version 7.1.2

img = Image.open('.\\temp\\original.png')
print(img2.mode) # RGB
img.save('.\\temp\\test.png') # This is darker than original

Я обнаружил, что оригинал содержит эту информацию, используя атрибут img.info:

{'aspect': (1, 1), 'chromaticity': (0.3127, 0.329, 0.64, 0.33, 0.3, 0.6, 0.15, 0.06), 'gamma': 0.50994}

Сохраненных изображений нет. Amazed Pillow на самом деле не сохраняет эту информацию с новыми изображениями, и я ищу способ обойти это. Другое предложение SO не сработало:

from PIL import Image

img = Image.open('1.png')
png_info = img.info
img.save('2.png', **png_info)

Согласно документации, .save(), похоже, не поддерживает добавление этой информации, и я ищу способ обойти это, в идеале что-то, что все еще позволяет мне так же легко конвертировать изображения в тензоры RGB Pytorch. (И обратно.)

Обновление: ссылка на пример изображения, на котором возникает эта проблема: при открытии и сохранении изображение станет темнее.

https://mega.nz/file/0AYwAQRJ#MrhtkDKN-EGj25eld2SrZO0GPrMDQlaz7rtVaQ-GtXs

1
Thomasedv 15 Июн 2020 в 00:53

1 ответ

Лучший ответ

Я не знаю, почему PIL / Pillow не работает / отказывается сохранять / сохранять информацию о гамме, но вы можете обойти это с помощью pngcheck и pngcrush.

Вы можете получить фрагмент gAMA с помощью:

pngcheck -v sonic.png | grep gAMA
chunk gAMA at offset 0x00066, length 4: 0.50994

И вы можете установить его, скажем, 0,9, после того, как PIL потерял его с помощью:

pngcrush -replace_gamma 0.9 INPUT.PNG OUTPUT.PNG
1
Mark Setchell 15 Июн 2020 в 11:15