问题简介
最近在一些网站爬了一些搞笑动态图片,没想到保存好之后预览竟然是是这样:
用图片浏览器逐帧看了一下,原来每一张图片第一帧都是类似空白的画面,所以预览的缩略图也是第一张画面。
那么如果能用代码读取到GIF的每一帧,删除后在合并为一个新GIF那问题就解决了。
于是找了下Java 操作GIF图片的类库,最后在GitHub上找到了这个:
方法简介
整个工程主要就两个java文件,一个用于解码的GifDecoder
类,一个用于编码的AnimatedGifEncoder
,另外有两个辅助类复制进来即可。
GifDecoder类
主要方法有:
public int read(String name)
指定需要解码的GIF图片路径,还有两个重载方法,支持读取
InputStream
和BufferedInputStream
public int getDelay(int n)
获取指定帧的延迟时间。
public int getFrameCount()
获取GIF图片的帧数
public int getLoopCount()
获取GIF图片的播放次数,0表示无限循环播放
public BufferedImage getFrame(int n)
获取指定帧的图像数据