考虑以下片段,我正在尝试创建一个不透明红色方块的图像,淡入大多数透明的蓝色方块。
$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;
输出看起来像红色和蓝色通道变得模糊,但不是alpha通道。我试过手动指定CHANNEL_ALPHA到blurImage的第三个参数,但它没有效果。我正在使用ImageMagick的6.6.2-6版本(并且针对该版本编译了PHP扩展)。
答案 0 :(得分:0)
这看起来像我认为你要求的那样:
<?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;
?>
这只能起作用,因为我们模糊的东西是纯红色;它不是一般解决方案。更通用的解决方案是创建单独的图像,模糊它,然后将其合成在背景上。