MagickWand 7 API:如何移植 MagickSetImageClipMask 调用

问题描述

ImageMagick 7 放弃了这个调用,但我找不到任何关于如何在新版本中复制其功能的示例。我的目标是用蒙版合成两个图像。这是我在版本 6 中所做的大大简化的 go 代码

func CleanUpImage(originalImage,maskImage *imagick.MagickWand) (*imagick.MagickWand,error) {

    err error;
    
    targetimage = imagick.NewMagickWand();  
    pw = imagick.NewPixelWand();

    width = originalImage.GetimageWidth(); 
    height = originalImage.GetimageHeight();
    _ = pw.SetColor("white");
    
    _ = targetimage.NewImage(width,height,pw);

    _ = targetimage.SetimageClipMask(maskImage);

    _ = targetimage.CompositeImage(originalImage,imagick.COMPOSITE_OP_copY,0);
    
    return targetimage,err;
}

有人可以指导我在第 7 版中运行它吗?

谢谢!

解决方法

我不熟悉 GO 绑定,但在 ImageMagick-7 中 MagickSetImageClipMask() 被替换为 MagickSetImageMask()。唯一的区别是用户可以定义掩码的方向(读/写)。

要匹配 ImageMagick-6 的 ClipMask,您需要将图像蒙版设置为 write。

MagickSetImageMask(image_wand,WritePixelMask,mask_wand);