Сохранение прозрачности PNG во время простого преобразования в imagemagick - PullRequest
1 голос
/ 24 июня 2019

Задача: у меня есть входной png-файл (многие на самом деле, но я просто зациклил решение).Это 16x16 PNG, 32 бита с частичной прозрачностью по краям.

Так получилось, что панели инструментов определенной тупой платформы требуется 17x17 файлов.Моя проблема в том, что imagemagick убивает прозрачность при выполнении простых преобразований.


Итак: проверка работоспособности:

convert add.png PNG32:add_COPIED.png

создает еще один файл 16x16 @ 32bpp.Пока все хорошо.

Преобразование (гравитация в порядке):

convert add.png -extent 17x17 PNG32:add_17.png

создает файл со сплошным белым фоном.Это не хорошо.


Что не работает:
Я пробовал серьезное количество комбинаций прозрачного, прозрачного цвета, фона, альфы и сглаживания.Никуда не попал.

Что работает:

convert address_book.png -alpha Extract address_book_MASK.png  
convert address_book.png -extent 17x17 PNG32:address_book_17.png  
convert address_book_MASK.png -background black -extent 17x17 address_book_MASK17.png  
composite -compose CopyOpacity address_book_MASK17.png address_book_17.png PNG32:address_book_FIN.png

Хотя у меня есть рабочий набор команд, и я могу пройти весь день, я искренне верю, что это неправильный путьчтобы сделать вещи - четыре команды, которые создают 3 промежуточных файла, которые мне нужно удалить позже.Наверняка это можно сделать лучше?

1 Ответ

1 голос
/ 24 июня 2019

Установите цвет фона перед изменением экстента:

convert input.png -background none -extent WxH result.png
...