2015-03-31 28 views
2

我使用imagemagick裁剪圖像(使用PHP界面,但我不認爲這太重要)。ImageMagick裁剪圖像與周圍的背景

我希望裁剪圖像,但如果裁剪部分超過圖像,我希望它顯示背景顏色。

下面是代碼我迄今爲止:

$newImg = new Imagick($imgUrl); 
$newImg->cropImage($cropW, $cropH, $x, $y); 
$newImg->resizeImage($resizedW, $resizedH, Imagick::FILTER_CATROM, 1); 
$newImg->writeImage($output_filename); 

但是由於某些原因,ImageMagick的拒絕顯示比所述圖像的邊界進一步的圖像的任何部分(即,如果x和y是較大比原始圖像的寬度和高度,它將其壓入圖像的視圖)。

例如 Cropping Image using a front end tool. As you can see the crop tool is over the imageThe result for the cropped image pushes the image back into view. I dont want this! I want a background

我希望它使得如果x和y是超出圖像部分,它顯示了一個背景顏色來代替。謝謝!

UPDATE

感謝namelivia建議,我決定使用「範圍」 tool.However我無法設置使用PHP通過這個工具的背景顏色。例如,以下內容會生成較大的圖像,但具有黑色背景,而不是紫色。

$newImg = new Imagick($imgUrl); 
$newImg->setImageBackgroundColor('#e7609a'); //Doesn't return an error (i.e. returns true) but also does not work! 
$newImg->setImageExtent(2000, 2000); 
$newImg->writeImage($output_filename); 

更新2

好像如果你希望使用的背景顏色,你應該使用extentImage(NOT setImageExtent)。

+0

爲什麼downvote?我認爲這是一個措辭很好的問題,在 – 2015-03-31 19:54:05

回答

2

我認爲你應該使用the extent option first,使用範圍,你也可以選擇背後的區域的背景顏色,然後你可以裁剪擴展圖像。

+0

之前沒有重複謝謝!不知道是否與該功能相關,但是如何通過PHP設置背景顏色。我更新的代碼不起作用。看問題。 – 2015-03-31 19:53:54

+0

管理修復它。感謝您的幫助 – 2015-03-31 20:04:15

+0

對於任何有此問題的人,我建議使用命令行工具而不是PHP API,因爲我相信現在已被棄用。 – 2016-08-15 20:24:29