2017-07-26 115 views
0

我想在文件的目录遍历此代码:我的目录ImageMagick的转换for循环

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复印件4.JPG

Film_Crew副本5.JPG

Film_Crew副本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/constitution.c/ReadImage/504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error/constitution.c/ReadImage/504。 转换:无法打开图像2.jpg': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no such image黑'@错误/ 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。 转换:此图像格式不解码代理' @ error/constitute.c/ReadImage/504. convert: unable to open image复制':没有这样的文件或目录@ error/blob.c/OpenBlob/2701。 转换:此图像格式不解码代理' @ error/constitute.c/ReadImage/504. convert: unable to open image 3.jpg':没有这样的文件或目录@ error/blob.c/OpenBlob/2701。 convert:no such image 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/constitution.c/ReadImage/504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error/constitution.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。 转换:此图像格式不解码代理' @ error/constitute.c/ReadImage/504. convert: unable to open image复制':没有这样的文件或目录@ error/blob.c/OpenBlob/2701。 转换:此图像格式不解码代理' @ error/constitute.c/ReadImage/504. convert: unable to open image 5.jpg':没有这样的文件或目录@ error/blob.c/OpenBlob/2701。 convert:no such image 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/constitution.c/ReadImage/504。 转换:无法打开图像copy': No such file or directory @ error/blob.c/OpenBlob/2701. convert: no decode delegate for this image format'@ error/constitution.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。 转换:此图像格式不解码代理' @ error/constitute.c/ReadImage/504. convert: unable to open image copy.jpg':没有这样的文件或目录@ error/blob.c/OpenBlob/2701。 convert:no such image 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。

+0

你的命令在ImageMagick 6.9.9.3 Q16 Mac OSX Sierra上正常工作。你的ImageMagick版本是什么?如果IM 7,则更改为magick。你确定你的文件Film_Crew.jpg存在于你期望的位置吗?它是否腐败?您也可以使用mogrify和-draw以及相应的撰写方法对给定的目录执行相同的操作。请参阅http://www.imagemagick.org/Usage/basics/#mogrify_compose – fmw42

+0

如何检查我拥有的ImageMagick版本? 编辑:找到它。我在ImageMagick 6.9.7-7 Q16上。我确信Film_Crew.jpg存在于我所在的文件夹中,并且没有损坏。我会研究一下mogrify文档。谢谢。 –

+0

尝试转换-version或magick -version。如果输入失败,请键入-a convert或type -i magick – fmw42

回答

1

生活将与mogrify容易 - 没有for循环,无报价:

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

是的,使用-mossmogrify比使用-draw建议mogrify更好。但奇怪的是他的命令对我来说工作得很好。 – fmw42

+0

'*。*'glob可怕地是Windows-y,应该可能是'* jpg'。 '$ i'应该用双引号。参数替换可能不是很健壮。 –

+0

是的,我同意Mark S.我通常使用'* .jpg',但是我留下他的'*。*'看看它是否有效。 *。*可以捕捉非图像文件。这可能是OSX版本和bash存在的问题。但是我发现它不可能会突然停止,除非ImageMagick版本或OSX发生了变化。这就是为什么我建议重启。但是,mogrify非常简单,可能是最好的方法,除非在命令或括号处理中需要多个图像。 – fmw42

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