Пакет "конвертировать" в 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
,