从命令行使半个图像透明
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
我真的不知道从哪里开始。我正在尝试做一些我认为使用 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