zra*_*ajm 16 linux command-line imagemagick ubuntu image-editing
我有一个灰度图像。我想将其转换为透明的 PNG,以便黑色像素(在原始图像中)变得完全不透明,白色像素变得完全透明,50% 灰色像素将变得 50% 透明,等等所有阴影之间。
我怎样才能做到这一点?
(是的,我知道这与Converting grayscale shades into alpha channel几乎相同,但我想知道如何仅使用命令行工具来做到这一点——例如 ImageMagick 或 NetPBM。)
以下是上述问题的示例结果。此示例是我希望仅使用命令行工具实现的结果。

如果您在支持透明度的查看器中打开此 PNG,您就会明白我的意思。
zra*_*ajm 19
哎呀。经过大量的谷歌搜索,并阅读了比我实际关心的更多的 ImageMagick 手册,这就是答案。鉴于您有一个名为 的灰度图像source.png,以下是我的命令。
要使黑色像素透明并保持白色像素不变,请运行以下命令:
convert source.png -alpha copy -fx '#fff' result.png
Run Code Online (Sandbox Code Playgroud)
要在保持黑色原样的同时使白色像素透明,请使用:
convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png
Run Code Online (Sandbox Code Playgroud)
让我们更彻底地解释最后一个命令:
convert – 是 ImageMagic 命令(多个命令之一)source.png – 灰度源图像。-alpha copy – 将上一个文件的内容复制到 Alpha 通道中。-channel alpha – 指定以下运算符仅应影响 Alpha 通道。-negate– 反转 alpha 通道(会,因为之前-chanel alpha不会影响图像的任何其他部分)。+channel– 指定以下操作符仅应影响颜色通道,不再修改 Alpha 通道。(这是默认设置,因此我们不需要在第一个更简单的示例中提供它。)-fx '#000'– 用黑色像素替换颜色通道内容。(因为+channelalpha 通道不会受到影响)。包含最后一个-fx选项非常重要,否则生成的图像中的所有半透明像素都将保留颜色。(由于这些像素是半透明的,所以可能并不明显,但最终的结果并不是人们所期望的。)
我发现ImageMagick 选项列表非常有用。
| 归档时间: |
|
| 查看次数: |
6225 次 |
| 最近记录: |