【问题标题】:Using a transparent PNG as a clip mask使用透明 PNG 作为剪辑蒙版
【发布时间】:2010-12-17 00:33:17
【问题描述】:

可以拍这张照片吗:

并应用此掩码:

然后把它变成这样:

使用 GD 还是 Imagick?我知道可以使用形状来掩盖图像,但我不确定如何继续使用预先创建的 alphatransparent 图像进行操作。 :s

【问题讨论】:

  • 我只是做了一些搜索,显然我可以使用 Wideimage (wideimage.sourceforge.net) 库来执行此操作。但是有没有比使用完整的库来实现这个功能更简单的方法?

标签: php gd imagick


【解决方案1】:

使用 Imagick 和 ImageMagick 版本 > 6(我不知道它是否适用于旧版本):

// Set image path
$path = '/path/to/your/images/';

// Create new objects from png's
$dude = new Imagick($path . 'dude.png');
$mask = new Imagick($path . 'dudemask.png');

// IMPORTANT! Must activate the opacity channel
// See: http://www.php.net/manual/en/function.imagick-setimagematte.php
$dude->setImageMatte(1); 

// Create composite of two images using DSTIN
// See: http://www.imagemagick.org/Usage/compose/#dstin
$dude->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0);

// Write image to a file.
$dude->writeImage($path . 'newimage.png');

// And/or output image directly to browser
header("Content-Type: image/png");
echo $dude;

【讨论】:

  • 谢谢!我在找这个!效果很好。
【解决方案2】:

我想你正在寻找imagealphablending。我将它用于水印,我相信它会达到您想要的效果。

【讨论】:

  • 不,我不相信。我没有合并图像,我使用一个图像来掩盖现有图像。结果图像是 alpha 透明的。
  • 反转你的面具。使中心反式,边缘褪色为白色。然后将图像裁剪或缩放到蒙版大小。这当然假设为白色背景。如果白色不可行,你在做黑白吗?如果是这样,请选择一种奇怪的颜色(亮粉色或深绿色,如果您也有颜色,这两种颜色都可以使用)。使真彩色图像和蒙版具有该颜色,然后将该调色板颜色设置为透明。所以,是的,我认为它会起作用,只需要从各个角度尝试。
【解决方案3】:

与 (ImageMagick) NOT GD 的出色合作。我看到这个问题的标签是 GD!!

这是此链接的 GD 版本: PHP GD Use one image to mask another image, including transparency

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2015-05-04
    • 2011-12-17
    相关资源
    最近更新 更多