2017-07-26 109 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