ImageMagick转换为循环

时间:2017-07-26 21:01:51

标签: for-loop imagemagick imagemagick-convert

我想在文件目录上迭代此代码:

convert Film_Crew.jpg -resize 1920x1080 -size 1920x1080 xc:black +swap -gravity center -composite Film_Crew_resize.jpg

我目录中的图片:

Film_Crew.jpg

Film_Crew copy.jpg

Film_Crew copy 2.jpg

Film_Crew copy 3.jpg

Film_Crew copy 4.jpg

Film_Crew copy 5.jpg

Film_Crew copy 6.jpg

我尝试使用这段代码,因为上次尝试时它对我有用,但现在还没有用。

for i in *.*; do convert $i -auto-orient -resize 1920x1080 -size 1920x1080 xc:black +swap -gravity center -composite "new/${i%.*}.jpg";done

我正在使用终端上的Mac工作。我得到的错误是:

转换:无法打开图片Film_Crew': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像2.jpg': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no such image黑色'@ error / mogrify.c / MogrifyImageList / 8770。 转换:没有定义图像new/Film_Crew copy 2.jpg' @ error/convert.c/ConvertImageCommand/3258. convert: unable to open image Film_Crew':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 convert:此图像格式没有解码委托' @ error/constitute.c/ReadImage/504. convert: unable to open image copy':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 convert:此图像格式没有解码委托' @ error/constitute.c/ReadImage/504. convert: unable to open image 3.jpg':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 转换:没有这样的图像black' @ error/mogrify.c/MogrifyImageList/8770. convert: no images defined new / Film_Crew copy 3.jpg'@ error / convert.c / ConvertImageCommand / 3258。 转换:无法打开图像Film_Crew': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像4.jpg': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no such image黑色'@ error / mogrify.c / MogrifyImageList / 8770。 转换:没有定义图像new/Film_Crew copy 4.jpg' @ error/convert.c/ConvertImageCommand/3258. convert: unable to open image Film_Crew':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 convert:此图像格式没有解码委托' @ error/constitute.c/ReadImage/504. convert: unable to open image copy':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 convert:此图像格式没有解码委托' @ error/constitute.c/ReadImage/504. convert: unable to open image 5.jpg':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 转换:没有这样的图像black' @ error/mogrify.c/MogrifyImageList/8770. convert: no images defined new / Film_Crew copy 5.jpg'@ error / convert.c / ConvertImageCommand / 3258。 转换:无法打开图像Film_Crew': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error / construct.c / ReadImage / 504。 转换:无法打开图像6.jpg': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no such image黑色'@ error / mogrify.c / MogrifyImageList / 8770。 转换:没有定义图像new/Film_Crew copy 6.jpg' @ error/convert.c/ConvertImageCommand/3258. convert: unable to open image Film_Crew':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 convert:此图像格式没有解码委托' @ error/constitute.c/ReadImage/504. convert: unable to open image copy.jpg':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。 转换:没有这样的图像black' @ error/mogrify.c/MogrifyImageList/8770. convert: no images defined new / Film_Crew copy.jpg'@ error / convert.c / ConvertImageCommand / 3258。 转换:无法打开图像`new / Film_Crew.jpg':没有这样的文件或目录@ error / blob.c / OpenBlob / 2701。

2 个答案:

答案 0 :(得分:1)

使用mogrify生活会更容易 - 没有for循环,没有引用:

mkdir new
mogrify -path new -resize 1920x1080 -background black -gravity center -extent 1920x1080 *jpg

答案 1 :(得分:0)

使用ImageMagick尝试此操作,假设您的所有输入图像都是JPG。我将内部字段说明符设置为新行,以便文件名中的空格被视为名称的一部分。

cd
cd path2/your_image_directory
OLDIFS=$IFS
IFS=$'\n'
list=`ls *.jpg`
for img in $list; do 
convert \( "$img" -auto-orient -resize 1920x1080 \) \( -size 1920x1080 xc:black \) +swap -gravity center -composite "./new/${img%.*}.jpg"
done
IFS=$OLDIFS
相关问题