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

关键字: java jpeg 图像 压缩

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

java 代码
  1. BufferedImage image = ImageIO.read(new FileInputStream("~/Pictures/base.jpg"));   
  2. //读取图标   
  3. BufferedImage image_biao = ImageIO.read(new FileInputStream("~/Pictures/logo.gif"));   
  4. Graphics2D g = image.createGraphics();   
  5. g.drawImage(image_biao, 1010, image_biao.getWidth(null),   
  6.             image_biao.getHeight(null), null);   
  7. g.dispose();   
  8. FileOutputStream out = new FileOutputStream("~/Pictures/out.jpg");   
  9.   
  10. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
  11. JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);   
  12. param.setQuality(1f, false);   
  13. encoder.setJPEGEncodeParam(param);   
  14. encoder.encode(image);   
  15. 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("~/Picutures/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,这样可以保证输出与原图片相同质量的图片。

你可能感兴趣的:(java,资料备案)