2016-08-01 20 views
0

是否可以使用命令行版本的ImageMagick修剪圖像(比如說帶有alpha的PNG),以便輸出圖像的寬度和高度均勻(不奇怪)?準確地說,輸出圖像應先修剪,然後用透明像素填充。我需要這個用於精靈表單打包,所以在我想訪問存儲的'Page geometry'或'Origin geometry'(也可以格式化爲%[fx:page.x]%[fx:page.y]格式的變量)之後, 。修剪圖像,並強制其尺寸爲

我知道這可以通過大量的shell /批處理腳本實現,但坦率地說,我正在尋找智能單線程。

+0

我會出價4行shell ... 1來獲得寬度和高度,1來輪寬度,1爲圓形高度,1爲調整大小。 –

+0

我會將我的出價提高到2行'bash' ... 1以獲得寬度和高度加1來調整大小。 –

+0

我的答案是否解決了您的問題?如果是這樣,請考慮接受它作爲您的答案 - 通過點擊投票計數旁邊的空心綠色勾號/複選標記。如果沒有,請說出什麼不起作用,以便我或其他人可以進一步幫助您。謝謝。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

1

更新回答

看來想要的圖像填充,而不是削減或調整,這樣你就可以做到這一點使用-extent你在評論中說:

convert image.png -background orange -extent $(convert image.png -format '%[fx:2*int((w+1)/2)]x%[fx:2*int((h+1)/2)]!' info:) result.png 

,如果您像用透明像素填充的圖像,而不是我相當時尚的橙色(!),將orange更改爲none

由於默認-gravity是NorthWest,因此會填充到右側和底部。例如,如果您想填充左側和頂部,請在-extent之前使用-gravity SouthEast

原來的答案

未經檢驗的,但應該工作...

這將讓你在新的層面:

convert image.png -format '%[fx:2*int((w+1)/2)]x%[fx:2*int((h+1)/2)]!' info: 

所以,你需要做的:

convert image.png -resize $(COMMAND ABOVE) result.png 
+0

這段代碼調整了圖像的大小,我希望它保持原始大小,但用較大的畫布。我會承擔責任,因爲我的問題不夠嚴謹。不過,它幫助我,因爲我們可以將'-resize'更改爲'-extent'。 – rostok

+1

請再看一下 - 我添加了一些更有用的東西。 –

+0

謝謝,應該這樣做!我已經將IM升級到v7,我很確定現在它可以在其他參數中解析FX表達式。所以'magick image.png -background orange -extent「%[fx:2 * int((w + 1)/ 2)] x%[fx:2 * int((h + 1)/ 2)]!」 result.png'也可以工作。不幸的是,我不能用mogrify來完成它。 – rostok