【问题标题】:Watermark as image Behind the Image using Imagick in php使用 php 中的 Imagick 将水印作为图像背后的图像
【发布时间】:2013-08-01 20:30:26
【问题描述】:

我正在使用 php 中的 Imagick 来显示图像后面的水印(图像),但不能。它显示在图像的前面

我的代码是:-

$watermark = new Imagick();
$watermark->readImage("watermark.png");  
$wWidth = $watermark->getImageWidth();
$wHeight = $watermark->getImageHeight();
$iWidth = $im->getImageWidth();
$iHeight = $im->getImageHeight();
 if ($iHeight < $wHeight || $iWidth < $wWidth) {
     $watermark->scaleImage($iWidth, $iHeight);
     $wWidth = $watermark->getImageWidth();
        $wHeight = $watermark->getImageHeight();
    }
    $x = ($iWidth - $wWidth) / 2;
    $y = ($iHeight - $wHeight) / 2;
$im->compositeImage($watermark,imagick::COMPOSITE_DEFAULT,$x,$y); 

必须做什么才能使水印(图像)显示在图像后面而不是图像前面。

【问题讨论】:

  • 如果它在您的图像后面,您将无法看到水印,因为您的图像挡住了。所以水印必须在上面。但是你可以让它几乎透明。这样,您可以同时看到水印和原始图像。
  • @Carsten 这不是真的。水印可以在后面。如果您使用合成图像,则可以使用合成混合输入,例如 imagick::COMPOSITE_DIFFERENCE 并从叠加层中减去源。见这里:php.net/manual/en/…
  • @Layke True。好主意,没想到。你应该这样回答。我试图传达的基本观点是“水印必须以某种方式到达顶部”。对我来说最明显的解决方案是在图像顶部添加水印。但是让图像对水印具有渗透性至少也一样好。

标签: php imagick


【解决方案1】:

您实际上可能需要编辑水印图像本身以使其几乎完全透明。当图像混合时,没有“前面”或“后面”,更多的是重叠颜色的混合。

如果您使水印几乎不透明,那么它会在最终图像中非常巧妙地显示出来。

【讨论】:

    猜你喜欢
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2014-05-11
    相关资源
    最近更新 更多