【问题标题】:Merge transparent PNG over a JPEG using PHP Imagick使用 PHP Imagick 在 JPEG 上合并透明 PNG
【发布时间】:2017-02-24 03:49:29
【问题描述】:

我正在使用 ImageMagick 7 以及 PHP 5.6.30 和 PECL Imagick 3.4.3。

使用下面的代码,我试图在 JPEG 图像上覆盖 50% 透明的 PNG。结果是 PNG 图像叠加但没有透明度。

有什么想法吗?

<?php
    $im = new Imagick('base.jpg');
    $wm = new Imagick('watermark.png');
    $wm->setImageAlpha(0.5);
    $im->compositeImage($wm, Imagick::COMPOSITE_COPYOPACITY, 0, 0);
    $im->writeImage('final.jpg');
?>

【问题讨论】:

  • 我相信你想要的常量是COMPOSITE_OVERCOMPOSITE_COPYOPACITY 应该只从图像中复制不透明度通道,而不是整个图像保留不透明度。
  • 使用 COMPOSITE_OVER 使图像透明但没有不透明度。有什么想法吗?

标签: php opacity imagick


【解决方案1】:

这似乎对我有用:

<?php
    $im = new Imagick('base.jpg');
    $wm = new Imagick();
    $wm->setBackgroundColor(new ImagickPixel('transparent'));
    $wm->readImage('watermark.png');
    $wm->setImageFormat('png32');
    $wm->setImageAlpha(0.5);
    $im->compositeImage($wm, Imagick::COMPOSITE_OVER, 0, 0);
    $im->writeImage('final.jpg');
?>

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 1970-01-01
    • 2016-08-20
    • 2013-09-20
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多