图片压缩之-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:\work\mpa\hyjc2\src\hyjc\image\ImageUtil.java:87: 错误: 找不到符号
[javac] JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
[javac] ^
[javac] 符号: 类 JPEGImageEncoder
因为这个 JPEGImageEncoder是sun公司的私有实现。
一般出现在这样的Java代码段:
- FileOutputStream out = new FileOutputStream(dstName);
- JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- encoder.encode(dstImage);
应该改成这样的Java代码:
- String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);
- //FileOutputStream out = new FileOutputStream(dstName);
- //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- //encoder.encode(dstImage);
- ImageIO.write(dstImage, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );
这样就没有问题了,因为都使用统一的ImageIO进行图像格式文件的读写,没有必要使用过时的实现类JPEGImageEncoder类。
因为网上很多文章在讲这个问题【程序包com.sun.image.codec.jpeg不存在】的时候,都是说什么rt.jar的问题,都没有说到点子上,所以特地发表出来,希望对大家有所帮助。
注意一般处理图像格式时,使用了下面的类。
- import java.awt.image.BufferedImage;
- //import com.sun.image.codec.jpeg.JPEGCodec;
- //import com.sun.image.codec.jpeg.JPEGImageEncoder;
- import javax.imageio.ImageIO;
写成一个方法:
// 2013.05.04
- static void saveImage(BufferedImage dstImage, String dstName) throws IOException {
- String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);
- //FileOutputStream out = new FileOutputStream(dstName);
- //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
- //encoder.encode(dstImage);
- ImageIO.write(dstImage, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );
- }
图片压缩之-JPEGCodec失效替换方案的更多相关文章
- 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱.怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目 ...
- Java中图片压缩处理
原文http://cuisuqiang.iteye.com/blog/2045855 整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你 ...
- HTML5 CANVAS 实现图片压缩和裁切
原文地址:http://leonshi.com/2015/10/31/html5-canvas-image-compress-crop/?utm_source=tuicool&utm_medi ...
- gulp-imagemin图片压缩----gulp系列(三)
本节实现图片压缩,在实现压缩前,先配置images任务,设置源目录和输出目录. 在系列(二)代码的基础上,再进行扩展. 1.找到gulp->config.js,对images进行源目录(src- ...
- node笔记——gulp-imagemin图片压缩
出处:http://blog.csdn.net/kkgege/article/details/49929983 之前用项目用gulp进行前端的构建,用到压缩图片插件gulp-imagemin, 后来发 ...
- 纯Java代码 图片压缩
Java图片压缩代码 package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java. ...
- java实现图片压缩
java实现图片压缩 package Test; import java.awt.Image; import java.awt.image.BufferedImage; import java.io. ...
- DuKBitmapImages 图片压缩处理技术
Android图片压缩上传系列 *压缩中的问题: --图片压缩上如果存在问题,势必造成消耗大量的流量,下载图片的速度慢等影响产品性能,那么如何解决?请看下面: 压缩图片一共多少张?一起压缩?分开压缩? ...
- Microsoft.AspNet.Web.Optimization.Bundle的完美替换方案
Web应用程序中包含大量的样式(css)和脚本(js)文件,这些文件的引用.管理和发布有很多解决方案.在Asp.Net MVC应用程序中,大家最熟悉的解决方案应属Microsoft.AspNet.We ...
随机推荐
- Linux net core docker hello world 简单使用
安装.net core From 官网 sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft ...
- 【转】Thread Local的正确原理与适用场景
本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ ThreadLocal解决什么问题 由于 ThreadLocal 支持范型,如 Thre ...
- C从源码到运行发生了哪些事
一个C/C++程序从源代码到可执行程序主要经历了四个阶段: ①预处理.包括展开宏.处理#include,#if,#ifdef等指令.删除注释.还有一些其他操作.相关命令:gcc -E或cpp ②编译. ...
- POJ1942-Paths On a Grid-组合数学
从n+m步中挑选min(n,m)步向上走,剩下的就是向下走. 求解n+mCmin(n,m)时,要一边计算一边约分. #include <cstdio> #include <algor ...
- day24 新三级菜单
china = { "shandong":{ "linyi":["lanshan","nanfang","he ...
- 【LOJ#6041】事情的相似度(后缀自动机)
[LOJ#6041]事情的相似度(后缀自动机) 题面 LOJ 题解 \(\mbox{YCB}\)搬了这道题目...\(\mbox{QwQ}\) 还是用到\(lcp\)就是\(parent\)树上的\( ...
- SharePoint 错误集 2
1 Run command “New-SPConfigurationDatabase" Feature Description: error message popup after run ...
- 【转】安全加密(三):RFID标签防伪为生活开启安全模式
本文导读 随着RFID技术的快速发展和RFID电子标签的生产成本不断降低,RFID标签防伪技术的应用也得到了极大的普及,逐步出现在各行各业当中,如交通出行.票务安全.商品防伪等领域. RFID技术简介 ...
- Problem C: 文体双花 解题报告
Problem C: 文体双花 被A穿的题,我这个屑只拿了20... 意识到这个题简单的时候考试已经快结束了,那边又各种吵,不过下午改题的情况来看,我可能码力还有点问题... 据神O所说,出这个题的时 ...
- 哈夫曼树Huffman
哈夫曼树处理这样的一种问题: 给出一棵n个叶子的k叉树,每个叶子有一个权值wi,要求最小化∑wi*di di表示,第i个叶子节点到根节点的距离.(一般是边数) 处理方法比较固定. 贪心的思路:我们让权 ...