2015-03-31 4 views
2

Я использую imagemagick для обрезки изображения (используя интерфейс PHP, но я не думаю, что это слишком важно).ImageMagick crop с окружающим фоном

Я хочу обрезать изображение, но если часть обрезки проходит по изображению, я хочу, чтобы он отображал цвет фона.

Вот код, который я до сих пор:

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

Однако по какой-то причине, ImageMagick отказывается показать любую часть изображения, которая находится дальше, чем границы изображения (то есть, если х и у больше чем исходная ширина и высота изображения, то она выводит его на экран).

например. Cropping Image using a front end tool. As you can see the crop tool is over the image The result for the cropped image pushes the image back into view. I dont want this! I want a background

Я хочу, чтобы это так, что если х и у находится за пределами участка изображения, он показывает цвет фона вместо этого. Благодаря!

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); 

UPDATE 2

Похоже, вы должны использовать extentImage (НЕ setImageExtent), если вы хотите использовать цвет фона.

+0

Почему downvote? Я думал, что это был хорошо сформулированный вопрос, который не повторялся до –

ответ

2

Я думаю, вы должны использовать the extent option first, используя объем вы также можете выбрать цвет фона для области «позади», тогда вы можете обрезать расширенное изображение.

+0

Спасибо! Не знал, что эта функция, но как установить цвет фона через PHP. Мой обновленный код не работает. См. Вопрос. –

+0

Удалите его. Спасибо за помощь. –

+0

Также для тех, у кого есть проблемы с этим, я предлагаю использовать инструмент командной строки вместо PHP API, так как я считаю, что теперь он устарел. –

Смежные вопросы