jpg与gif的互换(使用ImageIO代替JPEGImageEncoder)

要实现依赖于
animated-gif-lib-1.2.jar

gif转jpg

public synchronized static void toJpg(String gifName) throws IOException {
           /**
            * 在GIF的拆分和组装使用了animated_gif_jar工具包
            * 主要类是 gifdecoder 
            * "E:/desk/Desktop/0805_3.gif"
            */
        GifDecoder decoder = new GifDecoder();
        InputStream is = new FileInputStream(gifName);
        if(decoder.read(is) != 0) {
            System.out.println("读取有误");
            return;
        }
        is.close();
        System.out.println("帧的数量"+ decoder.getFrameCount());
        for(int i = 0; i < decoder.getFrameCount();i++) {
            BufferedImage frame = decoder.getFrame(i);
            int delay = decoder.getDelay(i);
            System.out.println("延迟时间"+ delay);
            OutputStream out = new FileOutputStream("E:/desk/Desktop/giffer/" + i + "g.jpg");
            ImageIO.write(frame, "png", out);
            out.flush();
            out.close();
        }

}


jpg转gif
public static void toGif(String path) throws IOException {
            try {
            int count = new File("E:/desk/Desktop/giffer").list().length;
            System.out.println(count);
            ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
            BufferedImage[] src = new BufferedImage[count]; 
            AnimatedGifEncoder encoder = new AnimatedGifEncoder();
            encoder.setRepeat(0);
            encoder.start(outputStream2);
            for(int i = 0;i < count;i++) {
                    encoder.setDelay(50);
                    src[ i ] = ImageIO.read(new File("E:/desk/Desktop/giffer/"+ i +"g.jpg"));
                    encoder.addFrame(src[i]);           
            }
            encoder.finish();
            System.out.println(count);
            File file = new File("E:/desk/Desktop/conn/1.gif");
              FileOutputStream fileOutputStream = new FileOutputStream(file);
              byte[] bytearray = outputStream2.toByteArray();
                fileOutputStream.write(bytearray);
                fileOutputStream.flush();
            }catch(Exception e) {
                 System.out.println( "jpgToGif Failed:");  
                    e.printStackTrace();  
            }
        }


}

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值