首页 文章

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

提问于
浏览 1304
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”颜色替换运算符 .

但是之后...

使用透明反转匹配的像素 . 这使得所有不匹配的颜色都是透明的 . -opaque运算符与-transparent完全相同,但将匹配颜色替换为当前填充颜色设置,而不是透明 . 但是,-transparent运算符还可以确保图像启用了Alpha通道,按照“-alpha set”,并且不需要您修改-channel以启用Alpha通道处理 . 请注意,这并未将颜色定义为用于颜色映射图像格式(如GIF)的“透明度颜色” . 对于那个使用-transparent-color

2 回答

  • 7

    我想警告你不要使用 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
    
  • -2

    一旦生成到GIF,请尝试-background颜色 .

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

    enter image description here

相关问题