【发布时间】: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。好主意,没想到。你应该这样回答。我试图传达的基本观点是“水印必须以某种方式到达顶部”。对我来说最明显的解决方案是在图像顶部添加水印。但是让图像对水印具有渗透性至少也一样好。