【问题标题】:Masking an image's alpha in Imagemagick在 Imagemagick 中屏蔽图像的 alpha
【发布时间】:2012-11-30 16:17:09
【问题描述】:

我需要创建一个图像用作翻转背景图像。它是一个圆形图案,被分成 8 块。这是主图像的屏幕截图(带透明度的 png):

这是蒙版图像的屏幕截图。它与主图像大小相同,并具有“馅饼”部分,以便遮盖除被悬停的扇区之外的所有部分。

我包括屏幕截图,因为我相信答案应该很简单(当你知道它们时,不是所有答案都很简单吗?!)所以我会节省带宽,但如果有帮助,我可以上传原始文件。

这是我用来创建新蒙版图像的命令:

convert main.png \( mask.png -colorspace gray -alpha off \) \
-compose copy-opacity -composite new.png

问题是创建的新图像已将原始图像的 alpha 压平为黑色背景:

如何让 Imagemagick 保留原始 png 的透明度?

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    我对@9​​87654321@ 不满意,因为它似乎忽略了蒙版的灰度。

    这个对我有用:

    composite -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set PNG32:result.png
    

    convert -compose Dst_In \( mask.png -alpha copy \) main.png -alpha Set -composite PNG32:result.png
    

    Dst_In 方法将两个图像的 Alpha 通道相乘。这里的技巧是将灰度蒙版转换为 alpha 通道,这是使用 -alpha copy 完成的。

    【讨论】:

      【解决方案2】:

      您希望蒙版合成来执行此操作。 http://imagemagick.org/Usage/compose/#mask

      该技术是将原始图像(src)合成到相同大小的完全透明图像(dst)上,使用蒙版来限制合成区域(蒙版)。它是 -composite 运算符的一个特例,涉及 3 张图像,而不是像其他 compose 方法那样的 2 张图像。您没有为此指定任何-compose 模式。

      获得此技术所需的完全透明 dst 的一种快速方法是克隆 src 图像并将其 alpha 通道清零,然后交换 src 和 dst 的顺序,以便它们在 @ 987654324@操作如下:

      convert main.png -alpha on \( +clone -channel a -fx 0 \) +swap mask.png -composite out.png
      

      【讨论】:

      • 太棒了!测试并完美运行。解释也很好。谢谢!
      • 有谁知道如何使用 RMagick 做到这一点?我想不通。
      猜你喜欢
      • 2015-02-13
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多