【问题标题】:Blur alpha channel in image in PHP/Imagick在 PHP/Imagick 中模糊图像中的 Alpha 通道
【发布时间】:2012-01-03 07:59:09
【问题描述】:

考虑下面的 sn-p,我正在尝试创建一个不透明的红色正方形逐渐淡入一个几乎透明的蓝色正方形的图像。

$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 扩展是针对该版本编译的)。

【问题讨论】:

  • 模糊 alpha 不会有任何区别,因为一切都在图像内 - 它不会将红色区域与蓝色区域模糊,只会将整个图像与任何东西模糊。

标签: php imagemagick


【解决方案1】:

这看起来像我认为您要求的:

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

这只是因为我们模糊的东西是纯红色的;这不是一个通用的解决方案。更通用的解决方案是创建一个单独的图像,对其进行模糊处理,然后将其合成到背景上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多