Я нахожусь в процессе написания сценария изображения для веб-сайта, который я создаю, и для одного из режимов изображения мне нужно и обрезать изображение, и сделать для него закругленные углы.Вот код, который я сейчас использую:
$img = new Imagick();
$img->readImageBlob($data);
$img->resizeImage($width, $height, $img->FILTER_GAUSSIAN, 1);
$canvas = new Imagick();
$canvas->newImage($size[0], $size[1], new ImagickPixel('white'));
$canvas->compositeImage($img, imagick::COMPOSITE_OVER, 0, 0);
$canvas->roundCorners(10, 10);
$canvas->setImageFormat('png');
Результирующее изображение
Однако полученное изображение примерно полупрозрачно, как показано выше, за исключениемя предполагаю, что 10-пиксельная граница px вокруг края, созданная roundCorner.Я пробовал много разных способов сделать это, в том числе напрямую обрезать $ img и roundCorner, но результат получился без закруглений.
Я подозреваю, что CompositImage - вор в этой драме, ноЯ не могу сказать наверняка.Кто-нибудь?
РЕДАКТИРОВАТЬ: Исправление: Если я делаю решение обрезки и округления, я получаю закругленные углы, но они имеют черный фон.Это код, который я использую здесь.Кто-нибудь заметил ошибку / решение?
$img = new Imagick();
$img->readImageBlob($data);
$img->resizeImage($width, $height, $img->FILTER_GAUSSIAN, 1);
$img->cropImage($size[0], $size[1], 0, 0);
$img->roundCorners(10, 10);
РЕДАКТИРОВАТЬ 2: Решением для обрезки и разрешения округления было убедиться, что это png, так что он имеет альфа-поддержку.Однако результат такой же, как и в моем исходном коде.
РЕДАКТИРОВАТЬ 3: Попробовал этот сценарий на моем сервере развертывания, и он работал так, как я хотел, поэтому, похоже, есть некоторые проблемы сверсия imagick / php-imagick поставляется с macports.Спасибо за помощь!