import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class jpgToGif {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//jpgToGif();
gifTojpg();
}
/*
* 将JPG图片转层gif动画
* */
public static void jpgToGif(){
try{
BufferedImage src = ImageIO.read(new File("c:/1.jpg")); // 读入文件
BufferedImage src1 = ImageIO.read(new File("c:/2.jpg")); // 读入文件
BufferedImage src2 = ImageIO.read(new File("c:/3.jpg")); // 读入文件
AnimatedGifEncoder e = new AnimatedGifEncoder();
e.setRepeat(0);
e.start("c:/laoma.gif");
e.setDelay(100); // 1 frame per sec
e.addFrame(src);
e.setDelay(1000);
e.addFrame(src1);
e.setDelay(100);
e.addFrame(src2);
e.finish();
}catch(IOException e){
e.printStackTrace();
}
}
/*
* 将GIF转JPG
* */
private synchronized static void gifTojpg() throws IOException {
GifDecoder decoder = new GifDecoder();
InputStream is = new FileInputStream("c:/bb.gif");
if(decoder.read(is) != 0){
System.out.println("读取有错误");
return ;
}
is.close();
System.out.println(" 帧是数量: "+decoder.frameCount);
for(int i=0;i<decoder.frameCount;i++){
BufferedImage frame = decoder.getFrame(i);
int delay = decoder.getDelay(i);
System.out.println("延迟时间: "+delay);
OutputStream out = new FileOutputStream("c:/"+i+"bb.jpg");
ImageIO.write(frame, "jpeg", out);//将frame 按jpeg格式 写入out中
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
out.flush();
out.close();
}
System.out.println("gif to jpg");
}
}
在导入如下两个类 import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; 系统可以报错。解决的方法为,菜单栏window->preference->java->compiler->Errors/Warning->Deprecated and restricted API->Forbidden reference(access rules),将Error选择Warning即可。