今天遇到一个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:\work\mpa\hyjc2\src\hyjc\image\ImageUtil.java:87: 错误: 找不到符号

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

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

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

  1. FileOutputStream out = new FileOutputStream(dstName);
  2. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  3. encoder.encode(dstImage);

应该改成这样的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的问题,都没有说到点子上,所以特地发表出来,希望对大家有所帮助。

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

  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

    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. }

图片压缩之-JPEGCodec失效替换方案的更多相关文章

  1. 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱.怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目 ...

  2. Java中图片压缩处理

    原文http://cuisuqiang.iteye.com/blog/2045855 整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你 ...

  3. HTML5 CANVAS 实现图片压缩和裁切

    原文地址:http://leonshi.com/2015/10/31/html5-canvas-image-compress-crop/?utm_source=tuicool&utm_medi ...

  4. gulp-imagemin图片压缩----gulp系列(三)

    本节实现图片压缩,在实现压缩前,先配置images任务,设置源目录和输出目录. 在系列(二)代码的基础上,再进行扩展. 1.找到gulp->config.js,对images进行源目录(src- ...

  5. node笔记——gulp-imagemin图片压缩

    出处:http://blog.csdn.net/kkgege/article/details/49929983 之前用项目用gulp进行前端的构建,用到压缩图片插件gulp-imagemin, 后来发 ...

  6. 纯Java代码 图片压缩

    Java图片压缩代码 package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java. ...

  7. java实现图片压缩

    java实现图片压缩 package Test; import java.awt.Image; import java.awt.image.BufferedImage; import java.io. ...

  8. DuKBitmapImages 图片压缩处理技术

    Android图片压缩上传系列 *压缩中的问题: --图片压缩上如果存在问题,势必造成消耗大量的流量,下载图片的速度慢等影响产品性能,那么如何解决?请看下面: 压缩图片一共多少张?一起压缩?分开压缩? ...

  9. Microsoft.AspNet.Web.Optimization.Bundle的完美替换方案

    Web应用程序中包含大量的样式(css)和脚本(js)文件,这些文件的引用.管理和发布有很多解决方案.在Asp.Net MVC应用程序中,大家最熟悉的解决方案应属Microsoft.AspNet.We ...

随机推荐

  1. c3算法详解

    c3 算法求某一类在多继承中的继承顺序:类的mro == [类] + [父类的继承顺序] + [父类2的继承顺序]如果从左到右的第一个类在后面的顺序中出现,那么就提取出来到mro顺序中[ABCD] + ...

  2. js break和continue

    break的兩種形式: break:未加標籤,適用於switch和循環結構 break labelname:適用於任何代碼塊: continue的兩種形式: continue:適用於循環結構 cont ...

  3. js脚本 将本地图片路径转换为html

    公司业务类似于电商, 因此有很多纯图片展示的商品详情页, 类似淘宝店商品页面下的多个图片组成的商品详情页, 页面很简单, 就是一大串img标签, 但是每次做详情页都要配合emmet一顿操作( 如下图 ...

  4. poj1068 【模拟】

    Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways:  ...

  5. [hdu3966]Aragorn's Story

    传送门 题目描述 Our protagonist is the handsome human prince Aragorn comes from The Lord of the Rings. One ...

  6. 洛谷 P2672 推销员 解题报告

    P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ...

  7. Linux中使用Electronic WeChat客户端

    微信推出了Windows版和Mac版,一直没有推出也不会推出Linux版本,这就催生了Electronic WeChat(https://github.com/geeeeeeeeek/electron ...

  8. JAVA8给我带了什么——并行流和接口新功能

    流,确定是笔者内心很向往的天堂,有他之后JAVA在处理数据就变更加的灵动.加上lambda表达不喜欢都不行.JAVA8也为流在提供另一个功能——并行流.即是有并行流,那么是不是也有顺序流.没有错.我前 ...

  9. eclipse复制工作空间配置

    eclipse复制工作空间配置   eclipse复制工作空间配置 总结一下,复制工作空间配置步骤如下: 1 使用eclipse新建workspace. 2 将新建的workspace下的.metad ...

  10. Failed to load because no supported source was found

    Uncaught (in promise) DOMException: Failed to load because no supported source was found? 等待解决: