2017-04-11 28 views
0

我需要調整圖像大小並清理exif數據,但輸出源圖像的exif數據big.jpg,並輸出small.jpg的轉換圖像大小。需要多個格式的信息: -

,不是輸出EXIF數據:

gm convert big.jpg -format "%w %h %[exif:DateTime]" -strip -resize "250x250>" -write small.jpg info:-

,不是輸出轉換後的圖像尺寸(small.jpg):

gm convert big.jpg -format "%w %h %[exif:DateTime]" -write info:- -strip -resize "250x250>" small.jpg

如何正確做呢? 謝謝。

回答

0

我有兩個解決方案給你 - 一個醜陋的,一個非常醜陋的! :-)

第一提取EXIF數據,將其寫入stderr所以它不會通過管通過,則管的圖像(在內部MIFF =>Magick圖像文件格式)轉換成第二convert ,做調整大小和打印尺寸調整後的尺寸:在兩個處理步驟之間

gm convert big.jpg -format "%[exif:DateTime]" -write info:/dev/fd/2 miff:- | gm convert miff:- -strip -resize "250x250>" -format "%w %h" -write info:- small.jpg 
2017:04:06 09:12:02 
250 107 

第二種方法是可能更有效,因爲它僅加載原始圖像一次並將其存儲在一個MPR(Magick永久寄存器) 。這兩個步驟的單一GraphicsMagick工具batch過程中運行:

cat - <<EOF | gm batch -prompt off 
convert big.jpg -write mpr:orig -format "%[exif:DateTime]" info:- 
convert mpr:orig -strip -resize "250x250>" -format "%w %h" -write small.jpg info:- 
EOF 

這些都包含「bash化」所以你需要bash下運行它們。

+0

感謝您的回答,但我知道如何在兩個電話中做到這一點:) 我想在一個電話中變得美麗。 –

+0

從技術上講,第二個是對'gm batch'的單個調用。 –

+0

我們使用'gm batch'作爲子工作者進程,從stdout獲取結果,我測量的速度相差一個呼叫和兩個,相差30%,現在我們用兩個呼叫來完成。 –