Imagemagick: удалить альфа-компонент (заменить все промежуточные альфа-пиксели на сплошные)
Чтобы решить проблему сборки Android, мне нужно заменить все промежуточные альфа-пиксели на сплошные (оставив прозрачный фон без изменений).
Как это сделать с помощью ImageMagick или другого инструмента командной строки, чтобы все изображения в дереве?
Изображение bg_all_block.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
К сожалению, ни одно другое решение, приведенное в этой ветке, не помогло мне.