Пакет "конвертировать" в JPG с хорошей альфа-сплющиванием

Я хотел бы изменить размер пакета и преобразовать в JPG несколько файлов PNG. Но некоторые пиксели прозрачны, а некоторые полупрозрачны; Я бы хотел, чтобы прозрачные были белыми, а полупрозрачные - белыми, наполовину смешанными с цветом.

У меня есть две половины решения:

convert file.png -resize 1200x1200  -background white -flatten  file.jpg

который работает хорошо, но только для одного файла; так есть ли простой способ пакетной команды "convert"? Я хочу, чтобы мои файлы сохраняли свои имена, которые не нумеруются (img001.png, img002.png и т. Д.), Но описательны (room.png, horse.png и т. Д.)... Или:

mogrify -resize 1200x1200 -format jpg -background "#FFFFFF" *.png

который хорошо сочетается, но полупрозрачные пиксели являются полноцветными, что довольно уродливо, когда предполагается, что линия переходит в альфа; Есть ли способ исправить это?

1 ответ

Вы могли бы использовать for цикл:

for f in ./*.png; do convert "$f" -resize -background white -flatten "${f%.*}.jpg"; done

Это будет работать с каждым файлом, имя которого заканчивается на .png в текущем каталоге. Каждый обход цикла, совпадающее имя файла читается в переменную $f; для того, чтобы втиснуть эту информацию в выходное имя файла, приведенная выше команда использует подстановку параметров.

${var%Pattern} -- Удалить из $var самая короткая часть $Pattern это соответствует заднему концу $var,

${var%%Pattern} -- Удалить из $var самая длинная часть $Pattern это соответствует заднему концу $var,

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