1、多张jpg图合成gif动画
/*** 把多张jpg图片合成一张
*@parampic String[] 多个jpg文件名 包含路径
*@paramnewPic String 生成的gif文件名 包含路径*/
private synchronized voidjpgToGif(String pic[], String newPic) {try{
AnimatedGifEncoder e= new AnimatedGifEncoder();
e.setRepeat(0);
e.start(newPic);
BufferedImage src[]= newBufferedImage[pic.length];for (int i = 0; i < src.length; i++) {
e.setDelay(200); //设置播放的延迟时间
src[i] = ImageIO.read(new File(pic[i])); //读入需要播放的jpg文件
e.addFrame(src[i]); //添加到帧中
}
e.finish();
}catch(Exception e) {
System.out.println("jpgToGif Failed:");
e.printStackTrace();
}
}
2、gif动画分解成多张jpg
/*** 把gif图片按帧拆分成jpg图片
*@paramgifName String 小gif图片(路径+名称)
*@parampath String 生成小jpg图片的路径
*@returnString[] 返回生成小jpg图片的名称*/
private synchronizedString[] splitGif(String gifName,String path) {try{
GifDecoder decoder= newGifDecoder();
decoder.read(gifName);int n = decoder.getFrameCount(); //得到frame的个数
String[] subPic = newString[n];
String tag= this.getTag();for (int i = 0; i < n; i++) {
BufferedImage frame= decoder.getFrame(i); //得到帧//int delay = decoder.getDelay(i);//得到延迟时间//生成小的JPG文件
subPic[i] = path + String.value(i)+ ".jpg";
FileOutputStream out= newFileOutputStream(subPic[i]);
ImageIO.write(frame,"jpeg", out);
JPEGImageEnco