Проблема с ImageMagick Добавление прозрачности периодически - PullRequest
0 голосов
/ 01 мая 2019

Я загружаю и конвертирую изображения для большой системы, которая до недавнего времени работала нормально. Теперь при загрузке изображений с диска IM / Wand периодически меняется их альфа-канал. Изображение с альфа-каналом, равномерно установленным на 100% (непрозрачное), будет изменено на однородное на 80% (частично прозрачное). Один и тот же файл, обработанный несколько раз, обычно заканчивается значением 80%, но иногда нет никаких изменений, и он остается правильным на уровне 100%. Это когда делается один файл за раз. При запуске в многопроцессорном режиме эффект более странный. Альфа изменяется только для небольшого фрагмента файла, обычно верхней трети. Время от времени, вместо того, чтобы изменять альфу, он полностью перемешивает верхнюю треть.

Некоторые файлы загружаются в формате TIFF и сохраняются в формате PNG32.

Это работает на: Ubuntu 17.10, Wand == 0.4.5, ImageMagick 7.0.8-12

Я уменьшил проблему, увидев, что это становится очевидным сразу после загрузки файла с диска. Я проверяю это, сохраняя тестовый / временный файл сразу после загрузки.

В основном я исключил проблему параллелизма процесса, добавив семафоры в код (блокировки файлов), но это не оказало никакого влияния, и проблема очевидна при запуске одного изображения за раз.

Я пробовал это с несколькими изображениями и вносил изменения во входное изображение.

Я проверил, не установил ли я недавно что-нибудь, что могло бы изменить мою систему.

Вот пример кода, который приводит к проблеме. Ничего особенного:

# Open the source image
background_img = Image(filename=input_path)

# Save the file to disk as a png32
background_img.save(filename='PNG32:{}'.format(output_path))

В реальной системе я использую объект Image background_img для других целей, и он также показывает проблему прозрачности. Я не уверен, что это загрузка или сохранение. Сейчас я проверяю это.

Вот несколько изображений, которые показывают проблему. На экране с белым фоном вы не можете видеть различия, но когда вы открываете что-то вроде GIMP с сеткой прозрачности, вы можете увидеть проблему альфа-канала. Кроме того, я знаю об изменении цветового пространства между оригиналом и примерами. Это из-за изменения размера для загрузки.

Это исходное изображение. Мне пришлось уменьшить его на 50% для загрузки: This is the source image. I had to scale it down 50% for upload.

Это пример неудачного преобразования: Example of Failed Conversion

Это пример правильного преобразования: Example of Correct Conversion

Если у кого-то есть представление о том, что может вызвать IM / Wand, оно периодически меняет альфа-канал изображения, просто загружая его, я был бы очень признателен, услышав от них.

...