2013-06-30 22 views
3

我在php中組裝Graphicsmagick命令,然後使用exec()調用它們。我需要修剪圖像,但保留20像素的填充。所以我想要做到以下幾點:修剪圖像背景,但在Graphicsmagick中留下填充

exec('gm convert input.jpg -trim -bordercolor white -border 20x20 output.jpg'); 

但使用修剪而不是白色的顏色。這可以如何實現?

回答

1

看來,這是目前不可能與GraphicsMagick(在寫這篇文章時:通用版v1.4測試版)。

在ImageMagick的是可以做到的,因爲IM提供FX指令進行採樣的給定像素的顏色值:

convert myimage.png -format '%[fx:p{10,20}]' info: 

這將在位置返回的像素的顏色值x = 10,Y = 20。然後可以在隨後的IM命令中使用輸出來添加該顏色的邊框。

3

這適用於我。

gm convert input.jpg -crop 1x1+0+0 corner.txt 
color=`sed -e "s/.* #/#/" corner.txt` 
gm convert input.jpg -trim -bordercolor $color -border 20x20 output.jpg 

在GraphicsMagick工具的txt格式不具有報頭(不像ImageMagick的),以使(0,0)像素是在第一行(實際上是一個1×1的圖像的唯一的線)。 爲1x1的的corner.txt文件裁剪圖像很簡單:

0,0: (255,255,255) #FFFFFF 

,正好是在我的測試圖像的白色,但是這將是(0,0)像素的任何顏色。

+0

謝謝你。還發現[fuzz](http://www.graphicsmagick.org/GraphicsMagick.html#details-fuzz)參數確實很有幫助,它可以讓你修剪邊緣,即使你的邊緣有瑕疵的jpeg。 –