如何使用ImageMagick将颜色设置为在GIF中透明?

时间:2012-07-09 05:57:59

标签: imagemagick

我很难找到如何使用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完全相同但替换   匹配颜色与当前填充颜色设置,而不是   透明。但是-transparent运算符也确保了   图像启用了Alpha通道,按照“-alpha set”,但没有   要求您修改-channel以启用Alpha通道处理。

     

请注意,这并未将颜色定义为'透明度   color'用于彩色映射图像格式,例如GIF。为此用途   -transparent色

2 个答案:

答案 0 :(得分:7)

我想提醒您使用mogrifymogrify会通过覆盖原始图片来转换图像。如果出现任何问题,您的图像就会消失。

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

要使黑色像素透明,请使用:

convert orig.gif -transparent black transp.gif

完美适合我。

我的即时通讯版: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

答案 1 :(得分:-2)

在将其生成为GIF后尝试-background颜色。

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

enter image description here