ImageIO.write() 图片质量损耗

 ​需求,给图片添加水印,

使用 Graphics2D 给图片添加了水印,之后使用ImageIO.write() 将图片添加到磁盘,结果190K的图片添加水印后变成了80K,图片质量产生损耗,造成原因是 ImageIO.write() 方法进行了质量压缩

水印

Graphics2D g = imgBuff.createGraphics();//imgBuff 原图
float alpha_biao = new Float(50).floatValue() / 100.0F;//透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha_biao));
g.drawImage(src_biao, x, y,sy_width, sy_height, null);
g.dispose();

解决方法  ://原方法ImageIO.write(imgBuff)​

FileOutputStream out = new FileOutputStream(destFile);//目标路径

 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam param=encoder.getDefaultJPEGEncodeParam(imgBuff);//imgBuff 添加水印后的图片​

param.setQuality(1, true);//设置质量

encoder.encode(imgBuff, param);

out.close();

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值