假设图像位于目录中/Desktop/projs/proj1/img/
,并且我希望输出文件转到/Desktop/projs/proj1/imgResized/
。
我尝试了这个命令:
convert /Desktop/projs/proj1/img/*.png -resize 130x130\! /Desktop/projs/proj1/imgResized/converted.png
这可行,但输出图像被重命名为converted-0.png
、converted-1.png
等。
我测试了其他命令来查看图像是否保留其名称:
for PHOTO in /Desktop/projs/proj1/img/*.png; do BASE=`basename $PHOTO` convert /Desktop/projs/proj1/img/*.png -resize 130x130 /Desktop/projs/proj1/imgResized/$BASE.png; done;
但它不起作用。
我该怎么做?如果可能的话,我该怎么做,但要将文件夹 A 中的所有图像压缩到 B?
答案1
这:
for i in /home/$USER/Desktop/projs/proj1/img/*.png; do
convert "$i" -resize 130X130 "/home/$USER/Desktop/projs/proj1/imgResized/${i##*/}"
done
应该工作,修改。
答案2
更少的击键次数:
for i in ~/Desktop/projs/proj1/img/*.png; do convert "$i" -resize 130X130 "${i/img/imgResized}"; done
答案3
欢迎来到 2023 年!令人惊讶的是,mogrify 与 imagemagick 并没有关联。
假设 imgResized 目录已经存在,下面的操作应该可以在包含原始图像的目录中正常工作,和保留原始名称。无需循环。
mogrify -resize 130x130 -quality 100 -path ~/Desktop/projs/proj1/imgResized/ *.png