图片压缩之-JPEGCodec失效替换方案
今天遇到一個(gè)405錯(cuò)誤,提示Method not allowed ,一直以為是控制器出問(wèn)題了,后來(lái)發(fā)現(xiàn)實(shí)際上是Jpeg庫(kù)有問(wèn)題。
剛開(kāi)始用這個(gè)庫(kù),沒(méi)想到已經(jīng)不推薦使用了。下面是網(wǎng)上找的解決方案。
http://blog.csdn.net/xuxu120/article/details/75024653
近期,由于項(xiàng)目需要,需要對(duì)圖片進(jìn)行壓縮處理,一開(kāi)始用的是JPEGCodec,但是運(yùn)行在JDK8以上版本中會(huì)找不到該類而報(bào)錯(cuò),故上網(wǎng)搜索了下資料,找出了高版本JDK中的替代方案ImageIO, 整理如下:
一些老的Java代碼在JDK1.7下編譯會(huì)報(bào)錯(cuò),比如這個(gè):程序包c(diǎn)om.sun.image.codec.jpeg不存在。
[javac] D:workmpahyjc2srchyjcimageImageUtil.java:87: 錯(cuò)誤: 找不到符號(hào)
[javac] JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
[javac] ^
[javac] 符號(hào): 類 JPEGImageEncoder
因?yàn)檫@個(gè) JPEGImageEncoder是sun公司的私有實(shí)現(xiàn)。
一般出現(xiàn)在這樣的Java代碼段:
Java代碼
FileOutputStreamout=newFileOutputStream(dstName);
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(dstImage);
應(yīng)該改成這樣的Java代碼:
Java代碼
StringformatName=dstName.substring(dstName.lastIndexOf(".")+1);
//FileOutputStreamout=newFileOutputStream(dstName);
//JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
//encoder.encode(dstImage);
ImageIO.write(dstImage,/*"GIF"*/formatName/*formatdesired*/,newFile(dstName)/*target*/);
這樣就沒(méi)有問(wèn)題了,因?yàn)槎际褂媒y(tǒng)一的ImageIO進(jìn)行圖像格式文件的讀寫(xiě),沒(méi)有必要使用過(guò)時(shí)的實(shí)現(xiàn)類JPEGImageEncoder類。
因?yàn)榫W(wǎng)上很多文章在講這個(gè)問(wèn)題【程序包c(diǎn)om.sun.image.codec.jpeg不存在】的時(shí)候,都是說(shuō)什么rt.jar的問(wèn)題,都沒(méi)有說(shuō)到點(diǎn)子上,所以特地發(fā)表出來(lái),希望對(duì)大家有所幫助。
注意一般處理圖像格式時(shí),使用了下面的類。
Java代碼
importjava.awt.image.BufferedImage;
//importcom.sun.image.codec.jpeg.JPEGCodec;
//importcom.sun.image.codec.jpeg.JPEGImageEncoder;
importjavax.imageio.ImageIO;
寫(xiě)成一個(gè)方法:
// 2013.05.04
Java代碼
staticvoidsaveImage(BufferedImagedstImage,StringdstName)throwsIOException{
StringformatName=dstName.substring(dstName.lastIndexOf(".")+1);
//FileOutputStreamout=newFileOutputStream(dstName);
//JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
//encoder.encode(dstImage);
ImageIO.write(dstImage,/*"GIF"*/formatName/*formatdesired*/,newFile(dstName)/*target*/);
}
總結(jié)
以上是生活随笔為你收集整理的图片压缩之-JPEGCodec失效替换方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【模板】NTT
- 下一篇: Web 部署工具 1.0