我一直在使用 GIMP 从我使用 Jmol 创建的几个 PNG 格式的帧创建动画 GIF 文件,现在我想知道如何使生成的 GIF 文件的背景透明。您建议的任何软件或网站都应该免费提供。
使动画 GIF 文件的背景透明
您可以使用GIFsicle执行此操作,使用以下选项:
gifsicle -U --disposal=previous --transparent="#ffffff" -O2 anim.gif > anim_trans.gif
其中anim.gif
和anim_trans.gif
是源文件名和目标文件名,并且#ffffff
是要使其透明的颜色的十六进制代码(此处为纯白色)。
(这里的重要选项是-U
/--unoptimize
和--disposal=previous
,它们一起将动画转换为“翻书模式”,其中每一帧在绘制下一帧之前都被完全擦除。这允许将额外的透明度添加到帧中,而不会让较早的帧通过透明部分。该-O2
选项并非绝对必要,但它可能会通过优化帧来缩小生成动画的文件大小,以避免不必要地重新绘制动画的静态部分。)
作为演示,这是来自 Wikimedia Commons的人类乙二醛酶 I (GLO1) 酶的动画(左),以及使用上面显示的方法添加的具有透明度的相同动画(右):
维基共享资源用户WillowW的原创动画,在CC-By 3.0许可下使用。
值得注意的一个细节是,如果 GIFsicle 命令似乎没有任何效果,您应该检查背景颜色是否真的正确。例如,对于上面显示的动画,实际的背景颜色变成了#fdfffc
(即非常略带黄绿色的白色)而不是#ffffff
(纯白色)。你实际上无法通过肉眼分辨出区别(或者,至少,我不能在这个屏幕上做到这一点),但足以让 GIFsicle 认为这两种颜色不同。
另请注意,GIF 文件仅支持 1 位透明度,这意味着透明区域的边缘不会被消除锯齿。只要您显示动画的背景与原始背景颜色不相距太远,就可以了,但如果是,您可能会发现动画边缘会出现一些难看的颜色边缘。不幸的是,除了选择更合适的背景或重新渲染动画外,您无能为力。
与 GIFsicle 和 GIFmagic 类似,EzGIF是一组在线 GIF 工具(除其他外),您可以这样做:
- 选择“效果”
- 上传 GIF
- 然后使用“用透明度替换颜色”框
- 并申请
(如果需要,您还可以优化结果)
如果您有 imagemagick,您可以convert input.gif -transparent white output.gif
在终端中运行该命令。