2012-01-03 59 views
38

我有一個圖像文件夾,覆蓋4MB - 我們稱之爲dsc_big/。我想使用convert -define jpeg:extent=2MB將它們轉換爲2MB,並將dsc_big/*複製到已存在的文件夾dsc_small/使用ImageMagick將圖像批量調整到新文件夾

我試過convert dsc_big/* -define jpeg:extent=2MB dsc_small/,但是會產生圖像,稱爲-0,-1等等。

我該怎麼辦?

回答

48

convert旨在處理單個輸入文件,據我所知,雖然我不得不承認我不明白你得到的輸出。 mogrify是在下面的風格更適合於批量處理:

mogrify -path ../dsc_small -define jpeg:extent=2MB dsc_big/* 

但老實說,我認爲這是危險的,一般使用(它會覆蓋原來的圖像,如果你忘記了-path),所以我總是用convert再加上for循環這樣的:如果你在當前目錄中處理文件

for file in dsc_big/*; do convert $file -define jpeg:extent=2MB dsc_small/`basename $file`; done 

basename通話是沒有必要的。

+0

另外我怎樣才能用'mogrify'來做到這一點? – tekknolagi 2012-01-03 04:48:24

+2

我添加了一個小例子,顯示了mogrify和一個鏈接。 – 2012-01-03 04:52:54

+1

ImageMagick 6.8.0可以使用convert:'convert * .jpg * .png'處理多個文件。但是我不知道如何處理輸出文件名,因爲ImageMagick只是將名稱設置爲序號(即:1.png,2.png,3.png等) – 2013-09-12 16:30:46

1

雖然這是一個古老的問題,但我添加了這個反應,爲其他任何人的利益,絆倒這一點。

我有完全相同的問題,並通過使用mogrify氣餒,我編寫了一個名爲easymagick而在內部使用convert命令使這個過程更容易小型基於Python的工具。

請注意,這仍然是一項正在進行的工作。我會很感激我能得到的任何反饋。

0

這對我的作品

convert -rotate 90 *.png rotate/image.jpg 

產生圖像0.jpg,圖像1.JPG,圖像2.JPG .....在 '旋轉' 文件夾。不知道保存原始文件名的方法。

+0

使用'mogrify -path rotate -rotate 90 * .png' – 2015-05-29 09:34:04

0

我發現cd -ing到所需的文件夾,然後使用bash全局變量$PWD使我的convert不會引發任何錯誤。我正在利用ImageMagick最近實現的caption:http://www.imagemagick.org/Usage/text/#caption函數來標記我的圖像與基本文件名,並將它們放在第一個目錄中的另一個目錄中。

cd ~/person/photos 
mkdir labeled 
for f in $PWD/*.JPG; do 
    width=$(identify -format %w $f) 
    filename=$(basename $f .JPG) 
convert -background '#0008' -colorspace transparent -fill white -gravity center -size ${width}x100 caption:"${filename}" ${f} +swap -gravity south -composite "$PWD/labeled/${filename}.jpg"; 
done 
+0

考慮在寬度開始的行中使用''$ f「'而不是'$ f' = ...'和'filename = ...'以防文件名中包含空格。 – 2015-12-16 00:56:57

4

這是長期嘗試後幫助我的命令。 我想從寬大,高度可變的大圖像列表中製作相同大小的縮略圖。這是爲了創建一個畫廊頁面。

convert -define jpeg:size=250x200 *.jpg -thumbnail 250x200^ -gravity center -extent 250x200 crop/thumbnail-%d.jpeg 

我得到了所有具有相同的寬度和高度的重新縮小的縮略圖。 :)感謝ImageMagick。

1

這裏有一個解決方案使用循環在控制檯上

convert *.jpeg -define jpeg:extent=2MB -set filename:f '../dsc_small/%t_small.%e' +adjoin '%[filename:f]' 

PS:如果版主刪除我的答覆爲「重複回答」一次,我從來沒有在堆棧溢出發佈一次。閱讀解決方案,這是不是相同的任何其他解決方案,這一個不使用控制檯上的循環,並使用ImageMagick像發佈問題的人請求。如果必須刪除一個答案,繼續刪除使用其他軟件包的答案,因爲他們實際上沒有回答這個問題

相關問題