Club源码:程序包com.sun.image.codec.jpeg不存在 的解决方案

public static void saveWithQuality(BufferedImage im, float quality, String outputImageFile) {
   String formatname=outputImageFile.substring(outputImageFile.lastIndexOf("."+1));
   ///FileOutputStream newImage = null;
   try {
      /* 输出到文件流 */
      //newImage = new FileOutputStream(outputImageFile);
      //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newImage);
      //JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(im);
      /* 压缩质量, 0.75 就算是高质量 */
      //jep.setQuality(quality, true);   // jep.setQuality(0.9f, true);
      //encoder.encode(im, jep);
      /* 近JPEG编码 */
      // newImage.close();
      int width=im.getWidth();
      int height=im.getHeight();
      width=parseDoubleToInt(width*quality);
      height=parseDoubleToInt(height*quality);
      Image image=im.getScaledInstance(width,height, Image.SCALE_SMOOTH);
      BufferedImage outputImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
      Graphics graphics=outputImage.getGraphics();
      graphics.drawImage(image,0,0,null);
      graphics.dispose();

      ImageIO.write(outputImage,formatname,new File(outputImageFile));
   } catch (Exception e) {
      throw new RuntimeException(e);
   }
   /* finally {
      //if (newImage != null) {
      // try {newImage.close();} catch (IOException e) {throw new RuntimeException(e);}
      //}
      }*/
}

报错的主要是JPEGImageEncoder在jdk1.7中已经被移除了,试了各种配置方法也没解决,参考了ImageIO的写法,修改了其中保存图片的代码。注释部分为原来的代码,并未直接删除,供参考,同时增加一个数值转换的方法:

/**
 * 将double类型的数据转换为int,四舍五入原则
 *
 * @param sourceDouble
 * @return
 */
private static int parseDoubleToInt(double sourceDouble) {
   int result = 0;
   result = (int) sourceDouble;
   return result;
}


目前来看,问题解决,源码也正常在IDEA下跑起来了。

请波总指导一下,看看代码写的是否有问题~~~~~~

想拥有club源码的请 点击首页的  “俱乐部”,加入即可下载。


评论区

JFinal

2017-10-11 15:55

这个一定得点赞收藏, 我自己都没时间处理这个问题,感谢感谢

热门分享

扫码入社