Инструмент mogrify в ImageMagick затемняет PNG (когда пытается изменить размер)

764
Jeff Ward

Я пытаюсь использовать простую команду для изменения размера изображений и перезаписи оригиналов:

mogrify -resize 80% * 

Мои исходные изображения - полупрозрачные PNG, которые оказываются серыми. Операция изменения размера работает, но делает изображения темнее.

Инструмент mogrify в ImageMagick затемняет PNG (когда пытается изменить размер)

Раньше он работал на другой машине (Ubuntu 12.04, с ImageMagick 6.6.9-7 2014-03-06) и сломался на более новой машине (Ubuntu 14.04, с ImageMagick 6.7.7-10 2014-03-06). На момент публикации поврежденная версия является последней версией в репозиториях Ubuntu 14.04.

Поскольку ImageMagick - инструмент с возможностью написания сценариев, это неудачная регрессия, которая должна была быть обнаружена модульным тестом. Я ухожу, чтобы проверить мои рабочие процессы со сценариями.

К вашему сведению - очевидно, что инструмент конвертации также затронут.

2
Попробуйте добавить `-type truecolorAlpha` ([проверьте здесь] (http://www.imagemagick.org/discourse-server/viewtopic.php?t=21436)) Hastur 9 лет назад 2
Да, опция `-type truecolorAlpha` также позволяет обойти ошибку. Jeff Ward 9 лет назад 0

2 ответа на вопрос

1
Hastur

Добавление -type truecolorAlphaможет решить эту проблему.

Можно найти объяснение, относящееся к типу PNG с истинным цветом исходного файла и разному размеру палитры до и после операции изменения размера.

По сути, это была ошибка из-за неправильного распознавания профиля iCCP из PNG (colortype 6), который был распознан как sRGB и может возникнуть в аналогичной ситуации.

0
Jeff Ward

Я нашел сообщение в блоге, показывающее обходной путь, указав формат вывода. Для меня я хотел полупрозрачные PNG, поэтому лучшим выбором было добавить -define png:format=png32опцию:

mogrify -define png:format=png32 -resize 80% * 

(Блог предлагает, -define png:format=png24но это, кажется, ограничивает выходной альфа до 1-бит.)

Похожие вопросы