我在php中組裝Graphicsmagick命令,然後使用exec()調用它們。我需要修剪圖像,但保留20像素的填充。所以我想要做到以下幾點:修剪圖像背景,但在Graphicsmagick中留下填充
exec('gm convert input.jpg -trim -bordercolor white -border 20x20 output.jpg');
但使用修剪而不是白色的顏色。這可以如何實現?
我在php中組裝Graphicsmagick命令,然後使用exec()調用它們。我需要修剪圖像,但保留20像素的填充。所以我想要做到以下幾點:修剪圖像背景,但在Graphicsmagick中留下填充
exec('gm convert input.jpg -trim -bordercolor white -border 20x20 output.jpg');
但使用修剪而不是白色的顏色。這可以如何實現?
看來,這是目前不可能與GraphicsMagick(在寫這篇文章時:通用版v1.4測試版)。
在ImageMagick的是可以做到的,因爲IM提供FX指令進行採樣的給定像素的顏色值:
convert myimage.png -format '%[fx:p{10,20}]' info:
這將在位置返回的像素的顏色值x = 10,Y = 20。然後可以在隨後的IM命令中使用輸出來添加該顏色的邊框。
這適用於我。
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)像素的任何顏色。
謝謝你。還發現[fuzz](http://www.graphicsmagick.org/GraphicsMagick.html#details-fuzz)參數確實很有幫助,它可以讓你修剪邊緣,即使你的邊緣有瑕疵的jpeg。 –