从命令行使半个图像透明

Making half an image transparent from the command line

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

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

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

感谢大家的帮助!

这是一个相当简单的方法。首先,如果您的图像没有 Alpha 通道,请启用 Alpha 通道,然后 select 通过以下 -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