Я пытаюсь удалить прозрачные области изображения с помощью php с помощью imagick.
Image Magick предлагает метод trim
: Imagick :: trimImage
Удалите края, которые являются цветом фона из изображения. Этот метод доступен, если Imagick был скомпилирован против ImageMagick версии 6.2.9 или новее.
Как установить цвет, который может украсить Imagick?
Следующий скрипт устанавливает цвет фона в серый. Однако триггер удаляет синий цвет фона, как вы можете видеть ниже.
$im = new Imagick( "1.png" ); // Set background color to grey $im->setImageBackgroundColor( new ImagickPixel( "rgb(213,213,213)" ) ); $im->trimImage( 0 ); $im->writeImage('2.png');
Есть ли способ ограничить цвета отделки?
версия модуля imagict => 2.1.1-rc1
Мэтт Гибсонс Подсказка привел меня к правильному решению: http://www.imagemagick.org/Usage/crop/#trim_color
Как уже сказал Мэтт, метод обрезки принимает угловые цвета, чтобы обрезать изображение. Данное решение из документации является обходным путем: они рисуют границу вокруг изображения, прежде чем называть метод обрезки.
$img = new Imagick("stripes.gif"); // Set the color to trim: $img->borderImage("#FF0000", 1, 1); $img->trimImage(0); $img->setImagePage(0, 0, 0, 0); $img->writeImage("test.jpg");'
Вы пробовали указать цвет фона как шестнадцатеричный код, а не создавать экземпляр ImagickPixel для него?
$im->setImageBackgroundColor( #D5D5D5 );