重庆美图库!!
查看: 75|回复: 0
打印 上一主题 下一主题
收起左侧

[我要招聘] java对图片进行“高保真”压缩

[复制链接]
1
跳转到指定楼层
发表于 2020-12-28 23:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
重庆商务网,重庆电子商务第一网!

登陆享受更多浏览权限哟~

您需要 登录 才可以下载或查看,没有帐号?入驻经典 

x

  应项目需要,对上传的商品图片进行压缩处理,且必须要保证原图片的高保真显示效果。正版图片的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!

  于是网上down资料,找到其中效果最好的一种方法,供大家使用和学习:

  代码如下:

  package com.hhsj.demo;

  import java.awt.image.BufferedImage;

  import java.io.File;

  import java.io.FileOutputStream;

  import javax.imageio.ImageIO;

  import com.sun.image.codec.jpeg.JPEGCodec;

  import com.sun.image.codec.jpeg.JPEGEncodeParam;

  import com.sun.image.codec.jpeg.JPEGImageEncoder;

  public class ImageCompress2 { ?

  ? ?  ?

  ? ? public BufferedImage zoomImage(String src) { ?

  ? ? ? ? BufferedImage result=null; ?

  ? ? ? ? try { ?

  ? ? ? ? ? ? File srcfile=new File(src); ?

  ? ? ? ? ? ? if (!srcfile.exists()) { ?

  ? ? ? ? ? ? ? ? System.out.println("文件不存在"); ?

  ? ? ? ? ? ? } ?

  ? ? ? ? ? ? BufferedImage im=ImageIO.read(srcfile); ?

  

  ? ? ? ? ? ?  ?

  ? ? ? ? ? ? int width=im.getWidth(); ?

  ? ? ? ? ? ? int height=im.getHeight(); ?

  ? ? ? ? ? ?

  ? ? ? ? ? ? //压缩计算 ?

  ? ? ? ? ? ? float resizeTimes=0.3f; ? ?

  ? ? ? ? ? ?

  ? ? ? ? ? ?  ?

  ? ? ? ? ? ? int toWidth=(int) (width * resizeTimes); ?

  ? ? ? ? ? ? int toHeight=(int) (height * resizeTimes); ?

  

  ? ? ? ? ? ?  ?

  ? ? ? ? ? ? result=new BufferedImage(toWidth, toHeight, ?

  ? ? ? ? ? ? ? ? ? ? BufferedImage.TYPE_INT_RGB); ?

  

  ? ? ? ? ? ? result.getGraphics().drawImage( ?

  ? ? ? ? ? ? ? ? ? ? im.getScaledInstance(toWidth, toHeight, ?

  ? ? ? ? ? ? ? ? ? ? ? ? ? ? java.awt.Image.SCALE_SMOOTH), 0, 0, null); ?

  ? ? ? ? ? ?

  

  ? ? ? ? } catch (Exception e) { ?

  ? ? ? ? ? ? System.out.println("创建缩略图发生异常" + e.getMessage()); ?

  ? ? ? ? } ?

  ? ? ? ?

  ? ? ? ? return result; ?

  

  ? ? } ?

  ? ?

  ? ? ?public boolean writeHighQuality(BufferedImage im, String fileFullPath) { ?

  ? ? ? ? ? ? try { ?

  ? ? ? ? ? ? ? ?  ?

  ? ? ? ? ? ? ? ? FileOutputStream newimage=new FileOutputStream(fileFullPath); ?

  ? ? ? ? ? ? ? ? JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(newimage); ?

  ? ? ? ? ? ? ? ? JPEGEncodeParam jep=JPEGCodec.getDefaultJPEGEncodeParam(im); ?

  ? ? ? ? ? ? ? ?  ?

  ? ? ? ? ? ? ? ? jep.setQuality(0.9f, true); ?

  ? ? ? ? ? ? ? ? encoder.encode(im, jep); ?

  ? ? ? ? ? ? ? ? ?

  ? ? ? ? ? ? ? ? newimage.close(); ?

  ? ? ? ? ? ? ? ? return true; ?

  ? ? ? ? ? ? } catch (Exception e) { ?

  ? ? ? ? ? ? ? ? return false; ?

  ? ? ? ? ? ? } ?

  ? ? ? ? } ?

  ? ? ? ?

  ? ? ?public static void main(String[] args) { ?

  ? ? ? ? ?String inputFoler="D:\\img.jpg" ;

  ? ? ? ? ? ?

  ? ? ? ? String outputFolder="D:\\newImg.jpg"; ? ?

  ? ? ? ?  ?

  ? ? ? ? ImageCompress2 narrowImage=new ImageCompress2(); ?

  ? ? ? ? ?narrowImage.writeHighQuality(narrowImage.zoomImage(inputFoler), outputFolder); ?

  ? ? ? ?

  ? ? } ?

  

  } ?
发布商机信息及企业宣传推广--请移步注册重庆商务网!!
快捷入口:给经典重庆客服留言
您需要登录后才可以回帖 登录 | 入驻经典  

本版积分规则

  • 欢迎关注重庆发展,多发帖多回帖才能持续保持帐号活力哟!请不要发表任何政 治,领 导,官 员,人 事及其它违法违规类言论,以免帐号被封禁。感谢您的支持和理解!
经典重庆旗下网站 | 24小时客服:13424176859 308675020

爱重庆,爱上经典重庆! 爱重庆,就上经典重庆!

快速回复 返回顶部 返回列表