我想轉換一組文件,但不覆蓋現有的文件。我如何使用mogrify來指定最終的文件格式?例如,firstpic.png - > firstpic-thumbnail.png,secondpic.png - > secondpic-thumbnail.png等在graphicsmagick中,我怎樣才能在大量文件上指定輸出文件?
克mogrify -size 150×150 * .PNG調整大小150×150 +輪廓 「*」 「% f-thumbnail.png「
有沒有辦法做到這一點?
我想轉換一組文件,但不覆蓋現有的文件。我如何使用mogrify來指定最終的文件格式?例如,firstpic.png - > firstpic-thumbnail.png,secondpic.png - > secondpic-thumbnail.png等在graphicsmagick中,我怎樣才能在大量文件上指定輸出文件?
克mogrify -size 150×150 * .PNG調整大小150×150 +輪廓 「*」 「% f-thumbnail.png「
有沒有辦法做到這一點?
我不知道是否有指定從mogrify輸出文件格式的方式,但我會用convert
用簡單的bash循環,而不是:
for f in *.jpg;
do
convert "$f" -resize 150x150 +profile "*" "${f%.jpg}-thumbnail.jpg";
done;
或者,如果你真想用mogrify
你可以使用-output-directory
(more on this option here)把新文件放到單獨的目錄,然後照顧重命名的:
mkdir tmp;
gm mogrify -output-directory tmp -size 150x150 -resize 150x150 +profile "" "*.jpg";
for f in tmp/*.jpg;
do
mv "$f" "${f%.jpg}-thumbnail.jpg";
done;
mv tmp/* .;
rm -rf tmp;
我喜歡第一種方法更好;)
如果輸出格式(擴展名)與輸入格式不同,則文件不會被覆蓋。如果它們是相同的,你可以使用這一招,使他們似乎是爲了這個目的「不同」,但實際上是一樣的,但在擴展的情況有所不同:
gm mogrify -resize 150x150 -format PNG +profile "*" *.png
編輯:
我不知道「mogrify」中的設施是否重命名輸出文件,而不是指定不同的目錄或不同的擴展名。所以fragphace的答案是正確的。您將需要使用腳本來重命名它們。在我的答案組合:
gm mogrify -resize 150x150 -format PNG +profile "*" *.png
for file in *.PNG
do
basename=`echo $file | sed -e "s/.PNG//"`
mv $basename.PNG $basename-thumbnail.png
done
我想保持文件擴展名相同,但附加文件名..所以原始文件將看起來像photo.png和新文件將看起來像photo-thumbnail.png 。我想將「縮略圖」添加到目錄中的每個文件。有沒有辦法做到這一點? –
不是直接。 Fragphace是正確的;你必須使用腳本。我相應地修改了我的答案。 –
謝謝!我希望我能給你兩個正確的答案。 –
這個答案是正確的(+1)。對於一次性運行,我使用一個腳本爲每個運行「gm convert」,但如果我做了很多圖像,我通常會使用類似於第二種方法的內容,以避免重複加載「gm」。在我看來,「-name filename」或類似文件將是添加到mogrify的有用選項。 ImageMagick和GraphicsMagick都有一個「-name」選項,但它的文檔非常稀疏,並且不被「mogrify」識別。 –