如何使图像背景透明?

6 image imagemagick

我有两张图片:

第一

http://www.eurocopter.in/contest/images/loader33.gif

第二

如果您将看到第一张图片没有背景.所以背景看起来很白.第二张图片有黑色背景.

  • 问题1:我们称之为第一类图片?

  • 问题2:如何制作这种类型的图片?

  • 问题3:如何将第二类图像转换为第一类图像?

Mar*_*ell 7

它们是动画GIF,第一个具有透明背景.您可以使用ImageMagick将图像分成单独的帧(安装在大多数Linux发行版上,并且可以免费用于OSX和Linux),如下所示:

convert -coalesce type1.gif frame%02d.gif
Run Code Online (Sandbox Code Playgroud)

这将为您提供以下18帧作为单独的图像

frame00.gif frame04.gif frame08.gif frame12.gif frame16.gif
frame01.gif frame05.gif frame09.gif frame13.gif frame17.gif
frame02.gif frame06.gif frame10.gif frame14.gif
frame03.gif frame07.gif frame11.gif frame15.gif
Run Code Online (Sandbox Code Playgroud)

frame00.gif

在此输入图像描述

如果你把它们变成这样的蒙太奇,你可以一次看到它们:

convert -coalesce type1.gif miff:- | montage -tile x4 -frame 5 - montage.gif
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以找到有关每个框架的信息,例如它的大小如下:

identify type1.gif

type1.gif[0] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[1] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[2] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[3] GIF 100x100 100x100+0+0 8-bit sRGB 64c 29.2KB 0.000u 0:00.000
type1.gif[4] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[5] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[6] GIF 100x100 100x100+0+0 8-bit sRGB 64c 29.2KB 0.000u 0:00.000
type1.gif[7] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[8] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[9] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[10] GIF 100x100 100x100+0+0 8-bit sRGB 64c 29.2KB 0.000u 0:00.000
type1.gif[11] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[12] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[13] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[14] GIF 100x100 100x100+0+0 8-bit sRGB 64c 29.2KB 0.000u 0:00.000
type1.gif[15] GIF 100x100 100x100+0+0 8-bit sRGB 64c 29.2KB 0.000u 0:00.000
type1.gif[16] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
type1.gif[17] GIF 100x100 100x100+0+0 8-bit sRGB 128c 29.2KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

您可以将所有帧重新组合在一起,如下所示:

convert frame* -loop 0 -delay 20 anim.gif
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以尝试从第二个中删除黑色背景,使其更像第一个,使用这样的命令.您可能需要fuzz稍微调整一下因素:

convert type2.gif -fuzz 15% -transparent black new.gif
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述