【问题标题】:PHP Imagick setImageOpacity destroys transparency and does nothingPHP Imagick setImageOpacity 破坏透明度并且什么都不做
【发布时间】:2011-04-02 02:49:08
【问题描述】:

事情就是这样。

关于透明图像,我在 PHP 中有一个简单的 sn-p:

$im = new Imagick('some-transparent-image.png');
$im->setImageOpacity(0.3);
$im->writeImage('output.png');

文件输出应该是透明度较低的透明图片吧?

嗯,输出是一个黑色的图像,它应该是透明的,而图像的不透明度是完全相同的。

这与配置有关还是我遗漏了什么?

提前谢谢你

【问题讨论】:

    标签: php png image-manipulation transparency imagick


    【解决方案1】:

    不幸的是 setImageOpacity 会影响整个图像,所以要让透明区域保持透明,请替换以下内容:

    $im->setImageOpacity(0.3); 
    

    与:

    $im->evaluateImage(Imagick::EVALUATE_MULTIPLY, 0.3, Imagick::CHANNEL_ALPHA);
    

    【讨论】:

    • 感谢您的回复,我会尝试一下,如果它有效,请告诉您:)
    • 您知道为什么 EVALUATE_MULTIPLY 在处理所有其他图像时无法处理某些图像的任何可能原因吗?
    • 很好的答案。既然您已经解释了 setImageOpacity 的工作原理,那就更有意义了。
    • 太棒了!节省了我大量时间尝试为一个看似简单的问题找到解决方案。
    • 这对我不起作用。 $img->evaluateImage(Imagick::EVALUATE_MULTIPLY, 0.5, Imagick::CHANNEL_ALPHA);还使之前透明的区域变暗。有什么想法吗?
    猜你喜欢
    • 2014-06-28
    • 2011-10-08
    • 2013-09-20
    • 1970-01-01
    • 2015-03-04
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多