批量“转换”为 jpg 格式,透明度良好

批量“转换”为 jpg 格式,透明度良好

我想批量调整几个 png 文件的大小并将其转换为 jpg。但有些像素是透明的,有些是半透明的;我希望透明的像素是白色的,半透明的像素是白色半混合颜色的。

我有两个半解决方案:

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

效果很好,但仅适用于一个文件;那么有没有一种简单的方法来批量执行“转换”命令?我希望我的文件保留其名称,这些名称不是编号的(img001.png、img002.png 等),而是描述性的(room.png、horse.png 等)... 或者:

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

批处理效果很好,但是半透明像素是全彩色的,当一条线应该淡入 alpha 时,这非常难看;有办法解决这个问题吗?

答案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

相关内容