`
goto0917
  • 浏览: 46550 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • take: 这是POI方式,不是JXLS方式. JXLS包路径都是net ...
    jxls

java图像压缩

    博客分类:
  • java
 
阅读更多
下面是一段给图片加上网站logo的代码,注意第12,13,14行设置了图片的压缩比。本例为不压缩原图片。

java 代码


BufferedImage image = ImageIO.read(new FileInputStream("c:\\base.jpg"));   
//读取图标   
BufferedImage image_biao = ImageIO.read(new FileInputStream(   
    "c:\\logo.gif"));   
Graphics2D g = image.createGraphics();   
g.drawImage(image_biao, 10, 10, image_biao.getWidth(null),   
            image_biao.getHeight(null), null);   
g.dispose();   
FileOutputStream out = new FileOutputStream("c:\\out.jpg");   
  
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);   
param.setQuality(1f, false);   
encoder.setJPEGEncodeParam(param);   
encoder.encode(image);   
out.close();  



setQuality

public void setQuality(float quality, boolean forceBaseline)

quality取值在 1.0 到 0.0 之间

Some guidelines: 0.75 high quality 0.5 medium quality 0.25 low quality



另外要得到一张指定高度和宽度的图片的话可以用以下代码:(接上面代码)

java 代码


BufferedImage tag = new BufferedImage(500, 300,image.getType());   
tag.getGraphics().drawImage(image, 0, 0, 500, 300, null); //绘制缩小后的图   
  
FileOutputStream out2 = new FileOutputStream("c:\\out2.jpg");   
  
JPEGImageEncoder encoder2 = JPEGCodec.createJPEGEncoder(out2);   
JPEGEncodeParam param2 = encoder.getDefaultJPEGEncodeParam(tag);   
param2.setQuality(1f, false);   
encoder2.setJPEGEncodeParam(param2);   
encoder2.encode(tag);   
out2.close(); 



注意第一行新建 BufferedImage 的时候要使用原图片的type,这样可以保证输出与原图片相同质量的图片。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics