Инструмент mogrify в ImageMagick затемняет PNG (когда пытается изменить размер)
Я пытаюсь использовать простую команду для изменения размера изображений и перезаписи оригиналов:
mogrify -resize 80% *
Мои исходные изображения - полупрозрачные 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
может решить эту проблему.
Можно найти объяснение, относящееся к типу PNG с истинным цветом исходного файла и разному размеру палитры до и после операции изменения размера.
По сути, это была ошибка из-за неправильного распознавания профиля iCCP из PNG (colortype 6), который был распознан как sRGB и может возникнуть в аналогичной ситуации.
Я нашел сообщение в блоге, показывающее обходной путь, указав формат вывода. Для меня я хотел полупрозрачные PNG, поэтому лучшим выбором было добавить -define png:format=png32
опция:
mogrify -define png:format=png32 -resize 80% *
(Блог предлагает -define png:format=png24
но это, кажется, ограничивает выходной альфа 1-битным.)