2016-04-12 104 views
1

我正在使用ImageMagick從我的圖像中修剪空白。一切都很好,併成功修剪。但是現在我想保留大約30px的偏移量並從圖像中刪除額外的空白。我的意思是說我現在的結果是ImageMagick修剪帶偏移量的空白

enter image description here

現在你可以看到上面的圖片是完全修剪,但我想有些像

enter image description here

我要離開30像素每一側偏移並修剪剩餘的空白。我正在使用以下代碼修剪毛髮:

$image = new Imagick('capfile.jpg');           
$image->trimImage(25000); 

我不想添加邊框或裁剪。我只是想將30px的偏移量修剪到主圖像本身,因爲我的很多圖像也有一些使用Fuzz修剪的淺色背景色,所以添加邊框不是一種選擇。

回答

1

你可以得到裝飾盒是ImageMagick的修剪喜歡這種在命令行:當你使用修改後的數字之前希望

convert -fuzz 10% -format %@ cap.jpg info: 
259x171+19+21 

然後,你可以修改寬度/高度和偏移做一個裁剪 - 即從x和y偏移中減去30,並將寬度和高度加上60。

編輯由emcconville

我如何在PHP這樣做呢?

下面是一個PHP替代...

$img = new Imagick('/tmp/Zpuq9.jpg'); 
// Get Quantum to calculate 40% 
$quantumInfo = $img->getQuantumRange(); 
// -fuzz 40% 
$img->trimImage($quantumInfo['quantumRangeLong'] * 0.4); 
// -format %@ 
$img->setOption('format','%@'); 
// info: 
$img->setImageFilename('info:'); 

/* 
* For this example, let's use PHP memory protocol 
* to capture std out (from `info:'). 
*/ 
$fd = fopen('php://memory','rwb'); 
$img->writeImageFile($fd); 
fseek($fd, 0); 
$info = fread($fd, 1024); 
fclose($fd); 
var_dump($info); 
//=> string(13) "258x170+19+22" 
+0

我如何在PHP這樣做呢?請爲此命令提供php代碼格式,以便我能理解。因爲我剛剛開始使用ImageMagick –

+0

Danack先生來救援... http://stackoverflow.com/a/29043311/2836621 –