当前位置: 移动技术网 > IT编程>开发语言>Java > Java图片处理之获取gif图一帧图片的两种方法

Java图片处理之获取gif图一帧图片的两种方法

2019年07月19日  | 移动技术网IT编程  | 我要评论

前言

本文主要给大家介绍了关于java获取gif图一帧图片的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、java原生代码实现gif获取一帧图片

先看测试代码:

 public static void main(string[] args) {
   /*这儿填写你存放要缩小图片的文件夹全地址*/
  string src = "c:/5.gif" ;
  /*这儿填写你转化后的图片存放的文件夹*/
  string tar = "c:/5_frame_2.jpg";
//  获取gif图片一帧图片
  getgifoneframe(src, tar, 2);
 }

核心代码:

fileimageinputstream in = null;
fileimageoutputstream out = null;
try {
 in = new fileimageinputstream(new file(src));
 imagereaderspi readerspi = new gifimagereaderspi();
 gifimagereader gifreader = (gifimagereader) readerspi.createreaderinstance();
 gifreader.setinput(in);
 int num = gifreader.getnumimages(true);
// 要取的帧数要小于总帧数
 if (num > frame) {
  imagewriterspi writerspi = new gifimagewriterspi();
  gifimagewriter writer = (gifimagewriter) writerspi.createwriterinstance();
  for (int i = 0; i < num; i++) {
   if (i == frame) {
    file newfile = new file(target);
    out = new fileimageoutputstream(newfile);
    writer.setoutput(out);
//    读取读取帧的图片
    writer.write(gifreader.read(i));
    return true;
   }
  }
 }

主要是创建gifimagereader对象,然后获取要取的那一帧图片

使用im4java调用imagemagick获取gif一帧图片

先看测试代码

public static void main(string[] args) throws exception {

 string src = "c:/test2.gif";
 string target = "c:/test2_frame_1.jpg";

 getgifoneframe(src, target, 1);

 system.out.println("完成");
}

主要实现:

/**
  * 获取gif图片一帧图片 - 同步执行
  * @param src  源图片路径
  * @param target 目标图片路径
  * @param frame  获取第几帧
  * @throws exception
  */
 public static boolean getgifoneframe(string src, string target, int frame) throws exception {
  if(!src.endswith(".gif")){
   return false;
  }
  createdirectory(target);
  imoperation op = new imoperation();
  op.addimage(src + "["+frame+"]");
  op.addimage(target);
  convertcmd cmd = (convertcmd) getimagecommand("convert");
  cmd.setasyncmode(false);
  cmd.run(op);
  return true;
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网