java合成jpeg图像 压缩问题 resize问题

在网上找到的java输出图像的例子里面一般都没有对jpeg图像输出的压缩比进行设置,而默认的都是有损压缩,输出的图片就会比原图片质量变低。

下面是一段给图片加上网站logo的代码,注意第12,13,14行设置了图片的压缩比。本例为不压缩原图片。

java 代码
  1. BufferedImage image = ImageIO.read(new FileInputStream("c:\\base.jpg"));   
  2. //读取图标   
  3. BufferedImage image_biao = ImageIO.read(new FileInputStream(   
  4.     "c:\\logo.gif"));   
  5. Graphics2D g = image.createGraphics();   
  6. g.drawImage(image_biao, 1010, image_biao.getWidth(null),   
  7.             image_biao.getHeight(null), null);   
  8. g.dispose();   
  9. FileOutputStream out = new FileOutputStream("c:\\out.jpg");   
  10.   
  11. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
  12. JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);   
  13. param.setQuality(1f, false);   
  14. encoder.setJPEGEncodeParam(param);   
  15. encoder.encode(image);   
  16. 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 代码
  1. BufferedImage tag = new BufferedImage(500300,image.getType());   
  2. tag.getGraphics().drawImage(image, 00500300null); //绘制缩小后的图   
  3.   
  4. FileOutputStream out2 = new FileOutputStream("c:\\out2.jpg");   
  5.   
  6. JPEGImageEncoder encoder2 = JPEGCodec.createJPEGEncoder(out2);   
  7. JPEGEncodeParam param2 = encoder.getDefaultJPEGEncodeParam(tag);   
  8. param2.setQuality(1f, false);   
  9. encoder2.setJPEGEncodeParam(param2);   
  10. encoder2.encode(tag);   
  11. out2.close();  
 
注意第一行新建 BufferedImage 的时候要使用原图片的type,这样可以保证输出与原图片相同质量的图片。
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值