• 图片压缩之-JPEGCodec失效替换方案


    今天遇到一个405错误,提示Method not allowed ,一直以为是控制器出问题了,后来发现实际上是Jpeg库有问题。
    刚开始用这个库,没想到已经不推荐使用了。下面是网上找的解决方案。
    http://blog.csdn.net/xuxu120/article/details/75024653

    近期,由于项目需要,需要对图片进行压缩处理,一开始用的是JPEGCodec,但是运行在JDK8以上版本中会找不到该类而报错,故上网搜索了下资料,找出了高版本JDK中的替代方案ImageIO, 整理如下:

    一些老的Java代码在JDK1.7下编译会报错,比如这个:程序包com.sun.image.codec.jpeg不存在。 

        [javac] D:workmpahyjc2srchyjcimageImageUtil.java:87: 错误: 找不到符号 

        [javac]             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
        [javac]             ^ 
        [javac]   符号:   类 JPEGImageEncoder 

    因为这个 JPEGImageEncoder是sun公司的私有实现。 

    一般出现在这样的Java代码段: 

    Java代码  收藏代码
    1. FileOutputStream out = new FileOutputStream(dstName);  
    2. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
    3. encoder.encode(dstImage);  


    应该改成这样的Java代码: 

    Java代码  收藏代码
    1. String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);  
    2. //FileOutputStream out = new FileOutputStream(dstName);  
    3. //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
    4. //encoder.encode(dstImage);  
    5. ImageIO.write(dstImage, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );  



    这样就没有问题了,因为都使用统一的ImageIO进行图像格式文件的读写,没有必要使用过时的实现类JPEGImageEncoder类。 

    因为网上很多文章在讲这个问题【程序包com.sun.image.codec.jpeg不存在】的时候,都是说什么rt.jar的问题,都没有说到点子上,所以特地发表出来,希望对大家有所帮助。 

    注意一般处理图像格式时,使用了下面的类。 

    Java代码  收藏代码
    1. import java.awt.image.BufferedImage;  
    2. //import com.sun.image.codec.jpeg.JPEGCodec;  
    3. //import com.sun.image.codec.jpeg.JPEGImageEncoder;  
    4. import javax.imageio.ImageIO;  



    写成一个方法: 
        // 2013.05.04 

    Java代码  收藏代码
      1. static void saveImage(BufferedImage dstImage, String dstName) throws IOException {  
      2.     String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);  
      3.     //FileOutputStream out = new FileOutputStream(dstName);  
      4.     //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
      5.     //encoder.encode(dstImage);  
      6.     ImageIO.write(dstImage, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );  
      7. }  
  • 相关阅读:
    Golang Gin 实战(一)| 快速安装入门
    6 款最棒的 Go 语言 Web 框架简介
    Golang教科书般的web框架
    vgo简明教程
    go mod常用命令 已经 常见问题
    线程池原理讲解 Java专题
    Python 3.9安装与使用
    消息队列的基本概念
    实践——GIT安装(2021/05/01)
    vue2.0数据双向绑定原理分析及代码实现
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/8306781.html
Copyright © 2020-2023  润新知