
GIF(Graphics Interchange Format),原义是“图像互换格式”,也是我们平时俗称的“动图格式”。GIF格式中存有多幅彩色图像,把存于一个文件中的多幅图像,按照一定速度逐幅读出并显示到屏幕上,就可构成一种最简单的动画。
这篇是为了解决一个日常遇到的问题:怎样利用ImageJ将一系列独立的图片组合并导出成GIF、AVI格式。反过来,如果有一个GIF和视频,怎么把它转成图片序列。
虽然有很多网站有GIF生成功能,但大多都有大小和长度限制,十分不方便。
ImageJ自带的基本功能,能够轻松地完成这一功能,而且不限制图片大小和时长。
例如怎么将下列50张连续的延时摄影图片:

转换为下面的GIF动图或者视频:

一、图片序列转GIF和视频
(1)导入图片序列,并组合成为一个Stack(Import -> Image Sequence)
将图片序列单独存在一个文件夹中,选中其中一张图片,然后打开:

然后弹出Sequence Options窗口,这里可以选择导入的图片大小、类型以及数量。注意这里要勾选Use virtual stack,这样图片序列就自动组合成为一个stack。

如果是一张一张拖入ImageJ而打开的,可以在(Image -> Stacks -> Images to Stack)中,将单独的图片组合成为一个Stack。
(2)设置动图导出参数(Image -> Stacks -> Animation -> Animation Options)

这里的Speed,指每秒多少帧,可以根据实际的拍摄帧数设置。
如果觉得总帧数太多,而又不需要太高的流畅度,可以减少帧数(Image -> Stacks -> Tools -> Reduce)

Reduction Factor指总帧数减少多少倍,例如当它为2时,即帧数减少为原来的一半。
(3)将Stack导出为动图-GIF、视频-AVI(File -> Save as)

导出格式选择GIF即为动图、AVI即为视频。
二、GIF和视频转图片序列
反过来,如果有一个GIF和视频,怎么把它转成图片序列。
(1)GIF转图片序列
直接将GIF图片拖入ImageJ打开,ImageJ会自动将它变成一个Stack:

可以利用(Image -> Stacks -> Stack to Images ) 或者Stack分离工具(Image -> Stacks -> Tools -> Stack Splitter),将Stack分解为图片序列后,再分别保存。
更简单的方法是直接(File -> Save as -> Image Sequence)

设置导出图片格式,命名(Digits指命名的数字长度)、起点等,即可直接将Stack保存为图片序列。
(2)视频转图片序列
常用的视频格式有AVI和MP4格式,但ImageJ默认只支持AVI视频格式,如果想打开MP4格式的视频,需要下载FFMPEG插件,可以参考之前的一篇文章:
Treasure琛:ImageJ好玩技巧——徒手测心率zhuanlan.zhihu.com
导入视频后,ImageJ会自动将它变成一个Stack:

后面的操作和上(1)相同。
学会了这一技巧,以后转GIF等格式,再也不用找各种网站或者软件啦~
如果对于ImageJ使用有什么问题可以私信我,或者给我发邮件:zhaoyc9@163.com
更多教程可以关注我的专栏:
ImageJ实用教程zhuanlan.zhihu.com
希望对大家有帮助~