`
三片仙人掌
  • 浏览: 12398 次
社区版块
存档分类
最新评论

解析Gif文件的每一帧为图片文件

阅读更多
方法一
网上下了解析gif的代码,有以下几个类(可以在网上找到):
AnimatedGifEncoder
GifDecoder
LZWEncoder
NeuQuant

调用的例子:
public static void main(String[] args) throws ImageFormatException,
			IOException {
		GifDecoder d = new GifDecoder();
		d.read("C:\\Users\\rui\\Desktop\\1.gif");
//		d.decodeImageData();
		int n = d.getFrameCount();
		System.out.println(d.gctFlag);
		System.out.println(d.gctSize);
		System.out.println(d.gct);
//		for(int i : d.gct) System.out.println(i);
		for (int i = 0; i < n; i++) {
			BufferedImage frame = d.getFrame(i); //  frame i
			
			int t = d.getDelay(i);
			FileOutputStream fos = new FileOutputStream("C:\\Users\\rui\\Desktop\\zrzr\\" + i + ".jpg");
			
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
			encoder.encode(frame);
			fos.close();
		}
	}



问题:
解析出来的图片颜色的怪怪的,背景是红色的...反正和原来看到的gif不一样,找半天原因,可能和 全局色表(global color table)有关,但还没弄明白。

方法二
File file = new File("C:\\Users\\Administrator\\Desktop\\1.gif");
		
		FileImageInputStream in = new FileImageInputStream(file);
		
        //GIFImageReader reader = null;
		ImageReaderSpi readerSpi = new GIFImageReaderSpi();
		
		//readerSpi.canDecodeInput(in);
		
		GIFImageReader gifReader = (GIFImageReader) readerSpi.createReaderInstance();
		
		gifReader.setInput(in);
		
		int num = gifReader.getNumImages(true);
		
		gifReader.getNumImages(true);
		
		System.out.println(num);
		
		ImageWriterSpi writerSpi = new GIFImageWriterSpi();
		
		GIFImageWriter writer = (GIFImageWriter) writerSpi.createWriterInstance();

		for (int i = 0; i < num; i++) {
			
			File newfile = new File("C:\\Users\\Administrator\\Desktop\\zrzr\\"+i+".jpg");
			
			FileImageOutputStream out = new FileImageOutputStream(newfile);
			
			writer.setOutput(out);
			
			writer.write(gifReader.read(i)); 
			
			out.close();
		}
分享到:
评论

相关推荐

    IOS解析gif文件

    使用ImageIO解析Gif文件,使用QuzrtzCore完成gif动画的显示。能够控制gif图片中每帧的播放时间。 本工具类最大的特点就是考虑到Gif中每一帧画面的显示时间,网上现有的大部分Gif工具类都没有考虑到这一点,所以播放...

    gif图片文件编解码

    解码吧gif的每一帧转换成dib gif文件格式网上有很多介绍 gif用的变长lzw压缩算法: 没弄懂原理,只知道过程。压缩取一个字符作为后缀,看看字符串是否存在。存在,用对应的编码作为前缀继续取;不存在把字符串添加...

    iOS开发中实现显示gif图片的方法

     于是自己写一个解析Gif的工具类,解决每一帧画面并遵循每一帧所对应的显示时间进行播放。    程序的思路如下:    1、首先使用ImageIO库中的CGImageSource家在Gif文件。    2、通过CGImageSource获取到Gif...

    micropython-gif-viewer:使用OLED显示屏在Micropython微控制器上对gif进行动画处理

    run ( 'fuzzy' ) 第一次执行gifviewer时,它将读取gif文件,对其进行解析,然后将每个帧的压缩形式写到微控制器的本地磁盘(在名为“ cache_ ”的目录下)。 一旦完成,微控制器将执行machine.restart()释放内存并...

    浅析IOS中播放gif动态图的方法

    一种方式是通过ImageIO框架中的方法将gif文件中的数据进行解析,再使用coreAnimation核心动画来播放gif动画,另一种方式计较简单,可以直接通过webView来渲染gif图。 二、为原生的UIImageView添加类别来支持gif动态...

    GifSeparator.zip

    Gif动图解析工具,可以检查gif文件是否真实有效,查看文件各项参数,分离gif每帧图片并且可以保存帧图片。已将.net5的运行环境一同打包,可直接使用哦

    JAVA上百实例源码以及开源项目

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    JAVA上百实例源码以及开源项目源代码

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    《计算机多媒体技术》第2阶段在线作业.docx

    A) 帧中的对象是唯一的 B) 开始帧和结束帧中的对象相同 C) 开始帧和结束帧都是关键帧 D) 开始帧和结束帧中的对象不同 参考答案: D 收起解析 解析: 无 窗体底端 窗体顶端 7(5.0分) 下列各项中,()不是常用的...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    4)修正不能对单帧GIF图片添加水印的问题,但GIF动画暂时还不支持添加水印! 5)重写及优化了控件html代码转xhtml代码的JS方法,现在即时转换XHTML的性能更佳,也修正了原来开启xhtml转换会破坏代码的BUG!(此功能测试稳定...

    vincent0700-cli:npx vincent0700-cli

    我已经序列化了GIF的每一帧,并将其保存为二进制文件。 然后,我使用url-loader加载每个帧,并将base64数据放入源文件中。 这样我就不需要将图像库打包到我的捆绑包中以在运行时解析gif了。 它仅取决于。 因此,下...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包3

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包6

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包10

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包4

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

Global site tag (gtag.js) - Google Analytics