【发布时间】:2014-09-14 16:44:43
【问题描述】:
我正在尝试在基本图像上放置叠加层(水印)。假设它看起来像这样:
带有“完全透明”文本的不透明矩形。 IE。文本的所有像素都是透明的,下面的背景也是如此。
1路:
我在 Photoshop 中设置不透明度 60%:
只需在代码中编写它:
MagickWand* overlay = NewMagickWand();
MagickReadImage(overlay, overlaypath);
MagickCompositeImage(wand, overlay, OverCompositeOp, 100, 100);
//all open/destroy code is omitted
结果是矩形是半透明的,而文本是完全透明的:
到目前为止一切顺利,但我也想通过应用程序配置来调节覆盖不透明度,所以我尝试了第二种方法:
2路:
在 Photoshop 中 100%(如本文中的第一张图片)并尝试通过 MagickWand 设置透明度:
MagickReadImage(overlay, overlaypath);
MagickSetImageOpacity(overlay, 0.6);
MagickCompositeImage(wand, overlay, OverCompositeOp, 100, 100);
结果是完全空白的矩形,虽然是半透明的
看起来MagickSetImageOpacity 将每个像素 Alpha 通道设置为相同的 0.6 值,而不管其当前值如何。我需要的是currentAlpha -= givenAlpha 用于overlay 魔杖的每个像素。如果不手动迭代每个魔杖像素,这可能吗?
【问题讨论】:
标签: c imagemagick