4

我很难找到如何使用 ImageMagick 在 GIF 中将颜色(在我的情况下为黑色)设置为透明。如何对一组现有的 GIF 图像执行此操作?

我试过这个选项,但它似乎没有做任何事情:

mogrify -transparent-color black -transparent black *.gif

我已经通读了这个,但实际上使颜色在 GIF 中变得透明的原因似乎有点令人困惑:http ://www.imagemagick.org/Usage/formats/#boolean_trans

例如:

请注意,设置“-transparent-color”不会为 GIF 图像添加任何透明度,也不会将指定的颜色转换为透明。该选项所做的只是指定应在颜色表中放置什么颜色,以用于表示 GIF 图像中的透明颜色的颜色索引。

如果要将特定(精确)颜色更改为透明,请使用“-transparent”颜色替换运算符。

但是之后...

使用 +transparent 反转匹配的像素。即使所有不匹配的颜色透明。

-opaque 操作符与 -transparent 完全相同,但将匹配的颜色替换为当前的 -fill 颜色设置,而不是透明的。但是,-transparent 运算符还确保图像启用了 alpha 通道,根据“-alpha set”,并且不需要您修改 -channel 以启用 alpha 通道处理。

请注意,这并未将颜色定义为用于颜色映射图像格式(如 GIF)的“透明颜色”。为此使用 -transparent-color

4

2 回答 2

8

我想警告你不要使用mogrify. mogrify确实通过覆盖原始图像来转换图像。如果出现任何问题,您的图像就会消失。

而是使用convert. 在确定转换正常后,您可以随时删除原始图像。

要使黑色像素透明,请使用以下命令:

convert orig.gif -transparent black transp.gif

非常适合我。

我的 IM 版本:ImageMagick 6.7.8-0 2012-07-04 Q16。你的是啥呢?

如果它仍然对您不起作用,那么您的 GIF 中的“黑色”可能根本不是黑色,而只是非常深的灰色。ImageMagick 还具有枚举 GIF 中所有颜色的工具。在这种情况下,以下 2 个命令可能会对您有所帮助:

 identify \
   -format "%f: - Uniq Colors: %k - Image transparency channel enabled: %A - Image Depth: %z %c\n" \
    *.gif

 convert \
     *.gif \
    -format "%f :\n%c\n\n" \
     histogram:info:  

可以通过名称“黑色”、RGB 值“(0, 0, 0)”以及十六进制值“#000000”来识别黑色的使用。所以纯黑色应该出现在最后一个命令的输出中,如下所示:

 5000: (  0,  0,  0) #000000 black

例如,深灰色可能是:

  100: ( 14, 14, 14,255) #0E0E0E srgba(14,14,14,1)
 2100: (  1,  1,  1,255) #010101 srgba(1,1,1,1)

在 GIF 中启用透明度后,最后一个命令应该为每种颜色显示 4 个值的元组,最后一个值表示 Alpha 通道。您以前的黑色将出现在输出中,如下所示:

 5000: (  0,  0,  0,  0) #00000000 none
于 2012-07-09T08:36:07.710 回答
-3

将 -background color 生成为 GIF 后尝试。

检查http://www.imagemagick.org/script/mogrify.php网址以获取 mogrify 和背景选项。见下图。

在此处输入图像描述

于 2012-07-09T06:04:45.620 回答