【问题标题】:Making half an image transparent from the command line从命令行使半个图像透明
【发布时间】:2016-10-14 04:31:39
【问题描述】:

我真的不知道从哪里开始。我正在尝试做一些我认为使用 imagemagick 相对简单的事情,但我不知道开始的确切命令。我需要在图像中画一条线,然后使图像中线上方的所有内容透明,并使线下方的所有内容成为原始图像。使用 imagemagick 完成此任务的最佳方法是什么?

所以我现在想出的是裁剪图像,然后将其调整为原始大小,但背景透明。我使用的命令是这个,但它总是显示为黑色。我不明白为什么。

convert -background none -gravity south out.png -resize 400x200 -extent 400x400 result.png

感谢大家的帮助!

【问题讨论】:

  • 尝试添加一个 Alpha 通道,其值为不透明的最大值,半透明的值为该值的一半。添加 alpha 通道可以通过将图像转换为 RGBA 来实现。
  • @user236012 这不是我想要的。我真的需要图像的下半部分是 100% 不透明,上半部分是 100% 透明。
  • 你需要添加一个掩码。我目前无法测试,但这应该会给你一些想法:imagemagick.org/Usage/photos/#overlap

标签: ffmpeg imagemagick batch-processing image-manipulation gimp


【解决方案1】:

这是一个相当简单的方法。首先,启用 alpha 通道以防您的图像没有,然后通过以下-fx 命令选择要修改的 alpha 通道。在那里,如果当前j 大于图像高度的一半,则使 alpha 层不透明,否则透明。比听起来容易!

所以,使用这个起始图像:

convert bean.jpg -alpha on -channel A -fx "j>h/2?1:0" result.gif

或者,反过来:

convert bean.jpg -alpha on -channel A -fx "j<h/2?1:0" result.gif

或者其他,其他方式:

convert bean.jpg -alpha on -channel A -fx "i<w/2?1:0" result.gif

或者,如果你在星期五早上感觉特别傻......

convert bean.jpg -alpha on -channel A -fx "hypot(i,j)/400-0.8" result.gif

【讨论】:

  • 太棒了!谢谢!
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 2011-09-15
  • 2010-12-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多