服务热线
178 0020 3020
GIF(Graphics Interchange Format),原义是“图像互换格式”,也是我们平时俗称的“动图格式”。GIF格式中存有多幅彩色图像,把存于一个文件中的多幅图像,按照一定速度逐幅读出并显示到屏幕上,就可构成一种最简单的动画。
这篇是为了解决一个日常遇到的问题:怎样利用ImageJ将一系列独立的图片组合并导出成GIF、AVI格式。反过来,如果有一个GIF和视频,怎么把它转成图片序列。
虽然有很多网站有GIF生成功能,但大多都有大小和长度限制,十分不方便。
ImageJ自带的基本功能,能够轻松地完成这一功能,而且不限制图片大小和时长。
例如怎么将下列50张连续的延时摄影图片:
转换为下面的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和视频,怎么把它转成图片序列。
(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插件,可以参考之前的一篇文章:
导入视频后,ImageJ会自动将它变成一个Stack:
后面的操作和上(1)相同。
原文链接:https://zhuanlan.zhihu.com/p/64630418
附件