Imagemagick: удалить альфа-компонент (заменить все промежуточные альфа-пиксели на сплошные)

Чтобы решить проблему сборки Android, мне нужно заменить все промежуточные альфа-пиксели на сплошные (оставив прозрачный фон без изменений).

Как это сделать с помощью ImageMagick или другого инструмента командной строки, чтобы все изображения в дереве?

Изображение bg_all_block.9.png

bg_all_block.9.png

Изображение btn_bg_common_press.9.png

btn_bg_common_press.9.png

ОБНОВЛЕНИЕ: я обнаружил, что могу определить, используется ли альфа, как в Обнаружении альфа-канала с ImageMagick

Другие найденные ссылки

3 ответа

Решение

Чтобы удалить альфа-канал из одного изображения, используйте эту команду:

convert input.png -alpha off output.png

Чтобы удалить альфа-канал из всех изображений в папке, используйте find сначала найти все файлы PNG, а затем запустить convert:

find . -name "*.png" -exec convert "{}" -alpha off "{}" \;

Пожалуйста, проверьте копию ваших файлов, чтобы быть уверенным.

...

см. диалог ниже, и ответ основан на том, что "нам нужно удалить альфу, которая не является 255"

convert input.png -channel A -threshold 254 output.png

и для партии

mkdir batch
FOR %G IN (*.png) DO convert %G -channel A -threshold 254 batch\%G

Что сработало для меня в macOS для пакетной обработки, так это:

      for f in *.png; do convert "$f" -channel A -threshold 254 "${f%%.png}.png"; done

Чтобы удалить альфа-канал из всех изображений в папке (например, из всех файлов.png), я использую следующую команду (в терминале на macOS):

for file in *.png; do convert $file -alpha deactivate; done

К сожалению, ни одно другое решение, приведенное в этой ветке, не помогло мне.

Другие вопросы по тегам