使用命令使用 imagemagick 将多个图像从一个文件夹调整到另一个文件夹(并保留名称)

使用命令使用 imagemagick 将多个图像从一个文件夹调整到另一个文件夹(并保留名称)

假设图像位于目录中/Desktop/projs/proj1/img/,并且我希望输出文件转到/Desktop/projs/proj1/imgResized/

我尝试了这个命令:

convert /Desktop/projs/proj1/img/*.png -resize 130x130\! /Desktop/projs/proj1/imgResized/converted.png

这可行,但输出图像被重命名为converted-0.pngconverted-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

相关内容