Java将gif格式图片转为jpg格式(2)

  jimi不支持的encode格式的解决

  /**

  *

  * @param source

  * @param dest

  * @throws JimiException

  */

  public void toGIF(String source, String dest) throws JimiException {

  if (dest == null || dest.trim().equals(""))

  dest = source;

  // 1:转换为jpg

  if (!dest.toLowerCase().trim().endsWith("jpg")) {

  dest += ".jpg";

  }

  toJPG(source, dest, 75);

  BufferedImage file_in = null;

  File file = new File(dest);

  try {

  file_in = Javax.imageio.ImageIO.read(file);

  } catch (IOException e) {

  e.printStackTrace();

  }

  int end = dest.lastIndexOf(".");

  file.deleteOnExit();

  // output *.gif

  file.renameTo(new File(dest.substring(0, end) + ".gif"));

  // jpg to gif

  AnimatedGifEncoder e = new AnimatedGifEncoder();

  e.start(dest);

  e.addFrame(file_in);

  e.finish();

  }

  这里用到了AnimatedGifEncoder 类,是我在网上搜索到的,对gif编码提供了一个实现,虽然还有待晚善的地方,不过单作格式转关已经够用了:)

  AnimatedGifEncoder e = new AnimatedGifEncoder();

  e.start(dest);

  e.addFrame(file_in);

  e.finish();

  需要注意的是:AnimatedGifEncoder 不能对所有格式的图片正确的识别,所以先要将其他格式转为jpg格式(最简单的方法是用imageIO)

  BufferedImage file_in = null;

  File file = new File(dest);

  try {

  file_in = javax.imageio.ImageIO.read(file);

  } catch (IOException e) {

  e.printStackTrace();

  }

  这样直接放入BufferedImage中就ok了

  e.addFrame(file_in);

  实际的编码过程在上面这句完成。

  int end = dest.lastIndexOf(".");

  file.deleteOnExit();

  // output *.gif

  file.renameTo(new File(dest.substring(0, end) + ".gif"));

  最后,在完成之前别忘了用上面几句消灭证据哟:)

  当然这种方法其实并不好,最彻底的方法是修改AnimatedGifEncoder,不过做人涅要厚道一点,毕竟是人家写的代码嘛,如果有兴趣的朋友可以讨论一下。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpgpj.html