【问题标题】:Subtract Png from other Png, preserve transparency, ImageMagick从其他Png中减去Png,保持透明度,ImageMagick
【发布时间】:2017-10-18 21:28:05
【问题描述】:

我想从 ma​​in.png 中减去 png ma​​sk.png,同时像这样保持 ma​​in.png 中的透明度

ma​​in.png

ma​​sk.png

ma​​sk.png 覆盖 ma​​in.png

输出.png

我在 SO Cut any shape from image ( Imagik/Gd) 上发现了这个问题,但它适用于 JPEG 图像而不是 png,因为它设置了黑色背景。

到目前为止,我已经想出了这段代码,但我无法得到我想要的输出

exec('convert "main.png" "mask.png" -geometry (+230+40) -compose copyopacity -composite 
-fuzz 1% -trim "output.png"');

它给了我输出

我希望黑色部分是透明的,因为它来自 ma​​in.png

这些我也试过了,但是没用

exec('convert "main.png" "mask.png" -geometry (+230+40) -fuzz 5% -transparent white 
"output.png"');

这是我的mask.pngmain.png

More info.

这是在@fmw42 的帮助下终于可以工作的代码

 exec('convert "main.png" "mask.png" -background none -geometry (+230+40) -compose dstin -composite -fuzz 1% -trim "output.png"');

【问题讨论】:

  • 不说明原因就直接否决或关闭任何问题总是不礼貌的。
  • 蒙版图片在哪里?是提供的图像还是只是蓝色部分?
  • @fmw42 红色框上的蓝色图像是蒙版图像。我想从主图像中剪下蓝色部分。
  • 请为两张图片提供实际透明度,而不是用棋盘格区域代替透明度。
  • 好的,请稍等5分钟。

标签: php image-processing imagemagick


【解决方案1】:

使用 ImageMagick 6.9.8.5 Q16,我得到(取决于修剪):

convert main.png mask.png -background none -gravity center -geometry +0-17 -compose dstin -composite result1.png

convert main.png mask.png -background none -gravity center -geometry +0-17 -compose dstin -composite -trim +repage result2.png

http://www.imagemagick.org/Usage/compose/

以上是你想要的吗?

注意:您的两张图片大小不同。面罩更小。因此,您需要将它(-geometry)放置得恰到好处以获得您想要的结果。

【讨论】:

  • 可能是我不够清楚。请稍候,我可以测试您的答案。
  • fmw42 您的第一个答案正是我想要的,但我不希望图像周围有额外的空间。我只想要 mask.png 部分,同时它提供原始输出。请查看此图片pasteboard.co/NlFK9UCN.png
  • fmw42 我刚刚通过像这样修剪空白得到了输出,请检查此代码是否正常或可以做得更好
  • fmw42 请检查我更新的问题。我已经将工作代码粘贴在那里。请检查该代码是否正常或可以做得更好
  • 我唯一看到的是,据我所知-geometry 不需要括号括起来它的参数+X+Y 就足够了。我不知道你为什么这么做(+X+Y)。我从未尝试过,也许没关系。您还应该在 -trim 之后添加 +repage。我不明白为什么在这种情况下你需要 -fuzz 1%,因为无论在哪里使用透明度都是完全透明的。
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2012-05-29
  • 2011-12-04
  • 2022-01-25
相关资源
最近更新 更多