Imagemagick 替换颜色但保持透明度

标签 imagemagick

我想用另一种颜色替换 PNG Logo 中的所有黑色实例。我尝试过:

convert source.png -fill #123456 -opaque black out.png

但 Logo 中有一些未转换的透明黑色像素。如何更改每个黑色像素,但保持每个黑色像素的透明度?

最佳答案

convert in.png xc:"#ff0000" -channel RGB -clut  out.png

这样就可以完成任务了。假设 in.png 有一个 Alpha channel ,in.png 中的 RGB channel 将被替换为红色 (#ff0000),同时保持 Alpha channel 不变。

这里发生了什么? in.png 是第一个输入图像。 xc:"#ff0000"是第二个输入图像(xc: 特殊文件被 ImageMagick 解释为全部填充给定颜色的图像)。 -clut 选项(“颜色查找表”)将第二个图像解释为查找表并将其应用于第一个图像中的值。由于第二个图像是单色的,因此在本例中,第一个图像中的每种颜色都映射为红色。最后一个文件名 (out.png) 被解释为输出文件。

为什么-clut不影响alpha channel ? 那么,您可以使用 -channel 选项设置受影响的 channel 。它必须位于 -clut 之前。 RGB 就是我们想要的。

关于Imagemagick 替换颜色但保持透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121220/

相关文章:

php - Imagemagick Crop 命令没有给出完美的结果

php - PHP 有没有好的图像处理 API(ImageMagick 替代品)?

perl - 使用 Base64 对 ImageMagick 图像进行编码

command-line - 使用 imagemagick 设置图像方向 exif 数据

c++ - 在 openMPI、C++ 中发送 ImageMagick 对象

java - ImageMagick 版本 7 的比较命令问题

php - 如何将 7MB GIF 上传到 Twitter 的 API

algorithm - IMAGEMAGICK:合并多个图像但保留具有特定颜色的区域

bash - 将文件夹树中的所有 .pdf 文件转换为 .png

c++ - 如何配置 ImageMagick 不使用任何临时文件?