Размытие альфа-канала на изображении в PHP / Imagick - PullRequest
2 голосов
/ 22 ноября 2011

Рассмотрим следующий фрагмент, в котором я пытаюсь создать изображение непрозрачного красного квадрата, постепенно исчезающего в основном прозрачном синем квадрате.

$image = new Imagick();
$image->newImage(300, 300, '#0000ff22');

$draw = new ImagickDraw();
$draw->setFillColor('#ff0000ff');
$draw->rectangle(100, 100, 200, 200);

$image->drawImage($draw);
$image->blurImage(25,23);

$image->setImageFormat("png");
header( "Content-Type: image/png" );
echo $image;

Вывод вместо этого выглядит как красный и синийканалы становятся размытыми, но не альфа-канал.Я попытался вручную указать CHANNEL_ALPHA для третьего параметра blurImage, но это не имело никакого эффекта.Я использую версию 6.6.2-6 ImageMagick (и расширение PHP скомпилировано для этой версии).

this

1 Ответ

0 голосов
/ 11 июля 2012

Похоже, что вы просите:

<?php
$image = new Imagick();
$image->newImage(300, 300, '#0000ff22');

$draw = new ImagickDraw();
$draw->setFillColor('#ff0000ff');
$draw->rectangle(100, 100, 200, 200);

$image->drawImage($draw);
$image->blurImage(25,23, imagick::COLOR_RED);

$image->setImageFormat("png");
header( "Content-Type: image/png" );
echo $image;
?>

Это работает только потому, что мы размываем только красный цвет; это не общее решение. Более общее решение будет создавать отдельное изображение, размыть его, а затем скомпоновать его на фоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...