For loop ImageMagick循环转换

For loop ImageMagick循环转换,for-loop,imagemagick,imagemagick-convert,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 电影摄制组副本2.jpg 电影摄制组拷贝3.jpg 电影摄制组副本4.jpg 电影摄制组拷贝5.jpg 电影摄制组拷贝6.jpg 我尝试使用此代

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

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

电影摄制组副本2.jpg

电影摄制组拷贝3.jpg

电影摄制组副本4.jpg

电影摄制组拷贝5.jpg

电影摄制组拷贝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电脑上。我得到的错误是:

转换:无法打开image
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 转换:无法打开映像
copy”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 convert:无法打开image
2.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。 转换:未定义图像
new/Film\u Crew copy 2.jpg'@error/convert.c/ConvertImageCommand/3258。
转换:无法打开图像
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 convert:此图像格式没有解码委托
@error/compose.c/ReadImage/504。
转换:无法打开图像
copy”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 convert:此图像格式没有解码委托
@error/compose.c/ReadImage/504。
转换:无法打开图像
3.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。
转换:未定义图像
new/Film\u Crew copy 3.jpg'@error/convert.c/ConvertImageCommand/3258。 转换:无法打开image
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 转换:无法打开映像
copy”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 convert:无法打开image
4.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。 转换:未定义图像
new/Film\u Crew copy 4.jpg'@error/convert.c/ConvertImageCommand/3258。
转换:无法打开图像
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 convert:此图像格式没有解码委托
@error/compose.c/ReadImage/504。
转换:无法打开图像
copy”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 convert:此图像格式没有解码委托
@error/compose.c/ReadImage/504。
转换:无法打开图像
5.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。
转换:未定义图像
new/Film\u Crew copy 5.jpg'@error/convert.c/ConvertImageCommand/3258。 转换:无法打开image
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 转换:无法打开映像
copy”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
convert:此图像格式没有解码委托
'@error/compose.c/ReadImage/504。 convert:无法打开image
6.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。
转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。 转换:未定义图像
new/Film\u Crew copy 6.jpg'@error/convert.c/ConvertImageCommand/3258。
转换:无法打开图像
Film_-Crew”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 convert:此图像格式没有解码委托
@error/compose.c/ReadImage/504。
转换:无法打开图像
copy.jpg”:没有这样的文件或目录@error/blob.c/OpenBlob/2701。 转换:没有这样的图像
black'@error/mogrify.c/mogrifyimagerist/8770。
转换:未定义图像
new/Film_Crew copy.jpg'@error/convert.c/ConvertImageCommand/3258。
转换:无法打开图像'new/Film_Crew.jpg':没有这样的文件或目录@error/blob.c/OpenBlob/2701。

使用
mogrify
-无
循环,无引用:

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

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

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

在ImageMagick 6.9.9.3 Q16 Mac OSX Sierra中,您的命令对我很有效。你的ImageMagick版本是什么?如果im7,则将其转换为magick。您确定您的文件Film_Crew.jpg存在于您期望的位置吗?腐败吗?您还可以使用mogrify和-draw以及适当的compose方法对给定目录执行相同的操作。查看如何检查我的ImageMagick版本?编辑:找到了。我在ImageMagick 6.9.7-7 Q16上。我确信Film_Crew.jpg存在于我所在的文件夹中,并且没有损坏。我将研究mogrify文档。谢谢。试试转换版或魔法版。如果失败,则键入-a convert或-a magick如果文件名中有空格,例如new/Film_Crew copy 2.jpg。文件名将在通配符搜索和列表的第一个空格处截断。因此,ImageMagick将找不到该文件,因为它缺少后缀等。请在文件名命令中加上双引号。或者删除该目录中存在的额外副本。这是真的!谢谢我需要在我的代码中添加双引号来解决这个问题吗?是的,带-extent的mogrify比我建议的带-draw的mogrify要好。但奇怪的是,他的命令对我来说效果很好