要实现依赖于
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();
}
}
}
“`