范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java图片压缩工具类

  1:先导入依赖                      net.coobird             thumbnailator             0.4.8         
  2:创建工具类import net.coobird.thumbnailator.Thumbnails; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream;  /**  * @PROJECT_NAME: water_chivalry  * @AUTHOR: Hanson-Hsc  * @DATE: 2020-07-27 09:08  * @DESCRIPTION: 图片压缩工具  * @VERSION:  */ public class PicUtils {   //以下是常量,按照阿里代码开发规范,不允许代码中出现魔法值     private static final Logger logger = LoggerFactory.getLogger(PicUtils.class);     private static final Integer ZERO = 0;     private static final Integer ONE_ZERO_TWO_FOUR = 1024;     private static final Integer NINE_ZERO_ZERO = 900;     private static final Integer THREE_TWO_SEVEN_FIVE = 3275;     private static final Integer TWO_ZERO_FOUR_SEVEN = 2047;     private static final Double ZERO_EIGHT_FIVE = 0.85;     private static final Double ZERO_SIX = 0.6;     private static final Double ZERO_FOUR_FOUR = 0.44;     private static final Double ZERO_FOUR = 0.4;      /**      * 根据指定大小压缩图片      *      * @param imageBytes  源图片字节数组      * @param desFileSize 指定图片大小,单位kb      * @return 压缩质量后的图片字节数组      */     public static byte[] compressPicForScale(byte[] imageBytes, long desFileSize) {         if (imageBytes == null || imageBytes.length <= ZERO || imageBytes.length < desFileSize * ONE_ZERO_TWO_FOUR) {             return imageBytes;         }         long srcSize = imageBytes.length;         double accuracy = getAccuracy(srcSize / ONE_ZERO_TWO_FOUR);         try {             while (imageBytes.length > desFileSize * ONE_ZERO_TWO_FOUR) {                 ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(imageBytes.length);                 Thumbnails.of(inputStream)                         .scale(accuracy)                         .outputQuality(accuracy)                         .toOutputStream(outputStream);                 imageBytes = outputStream.toByteArray();             }             logger.info("图片原大小={}kb | 压缩后大小={}kb",                     srcSize / ONE_ZERO_TWO_FOUR, imageBytes.length / ONE_ZERO_TWO_FOUR);         } catch (Exception e) {             logger.error("【图片压缩】msg=图片压缩失败!", e);         }         return imageBytes;     }      /**      * 自动调节精度(经验数值)      *      * @param size 源图片大小      * @return 图片压缩质量比      */     private static double getAccuracy(long size) {         double accuracy;         if (size < NINE_ZERO_ZERO) {             accuracy = ZERO_EIGHT_FIVE;         } else if (size < TWO_ZERO_FOUR_SEVEN) {             accuracy = ZERO_SIX;         } else if (size < THREE_TWO_SEVEN_FIVE) {             accuracy = ZERO_FOUR_FOUR;         } else {             accuracy = ZERO_FOUR;         }         return accuracy;     } }
  3:在上传图片接口处进行压缩
  /*** 图片上传(招租广告图片专用入口)*/ @PostMapping("file/img") @ApiOperation(value = "图片上传接口(广告图片专用入口)") public ResultVo imgUploads(@RequestParam("file") MultipartFile file) throws IOException {   //压缩图片到指定120K以内,不管你的图片有多少兆,都不会超过120kb,精度还算可以,不会模糊   byte[] bytes = PicUtils.compressPicForScale(file.getBytes(), 120);   ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);//生成保存在服务器的图片名称,统一修改原后缀名为:jpg   String newFileName = UUID.randomUUID() + ".jpg";   OSSUtil.upload2(newFileName, inputStream);   JSONObject result = new JSONObject();   result.put("url", OSSUtil.getUrl2(newFileName, ""));   return ResultVoUtil.success(result); }
  4.还有一个压缩图片工具类,但是不能指定压缩大小,可是很有用,压缩不会丢失精度,图片也很清晰:
  import com.bamboo.water_chivalry.common.enums.ResultEnum; import com.bamboo.water_chivalry.common.exception.GlobalException; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream;  /**  @DESCRIPTION: 图片压缩工具  @VERSION:*/ public class ImgCompression {  public static InputStream getImageCom(MultipartFile file) throws IOException {   //获取文件输入流   InputStream inputStream = file.getInputStream();   try {     // 把图片读入到内存中     BufferedImage bufImg = ImageIO.read(inputStream);     // 压缩代码,存储图片文件byte数组     ByteArrayOutputStream bos = new ByteArrayOutputStream();     //防止图片变红,这一步非常重要     BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);     bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);     //先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式     ImageIO.write(bufferedImage,"jpg",bos);     //获取输出流     inputStream = new ByteArrayInputStream(bos.toByteArray());     return inputStream;   } catch (IOException e) {     e.printStackTrace();     throw new GlobalException(ResultEnum.IMG_UPLOAD_ERROR);   }finally {     inputStream.close();   } } }

中国互联网还在跟随美国?不存在的!对标在互联网是一个很常用的词,它是为了让更多人听懂自己的商业模式跟之前的大咖有什么异同。而且这种自我定义,之前主要出现在中国公司和美国同类产品之间,比如搜狐是中国版的雅虎阿里是中国呼伦贝尔宋Pro店内降价1。0万元,欢迎到店鉴赏谈及理想生活,多少都会带有未来的憧憬,舒适科技感的生活,而现实中,你需要一台宋Pro,为你的现实生活增添舒适与便利,当前比亚迪益丰祥泰店最高优惠10。78,活动时间10月04日10比亚迪F3出租车的首选近年来,国内的经济增长迅速,国内的汽车保有量蹭蹭的上涨,虽然说目前市场开始疲软,但是国人对于汽车的热情依旧是高涨,不少的老百姓对于豪车以及新车型都保持着高度的关注,当然也时刻关注着除了线上抢购还要上口碑吃大餐!看留学生花式攻略玩转天猫双11今年已经是双11推出的第十周年了,不知不觉中,这个光棍节已经演变成了全球最大的购物节!到了今年,天猫双十一除了线上购物,还首次接入了口碑,让咱们线下吃喝玩乐都能享受超值优惠这简直就买不起核桃?这里全村当柴烧,正当农民绝望时他终于来了买得到的死贵,卖不掉的当柴烧?对核桃来说,天堂与地狱,只在一瞬间!超市里,货架上的核桃往往20多元一斤,爱吃核桃的消费者也不敢多买。但可知道,在中国农产品大省陕西,还有百亩滞销的核让重疾理赔不再困难,支付宝相互保2步完成理赔大佬进场,不同凡响。相互保成了继余额宝之后,支付宝平台推出的又一个现象级产品。截至发稿日期,已经超过1100万人次投保。用时仅仅9天而已。短时间内,何以吸引诸多用户?蚂蚁金服副总裁相互宝成员来报到宝宝们都在,让我们继续守护!暖心了一如往常的寒冬,莫名被网络上一股暖流击中,网友们童心未泯化身宝宝,纷纷列队报到相互宝幼儿园。原来,就在11。27日,原相互保正式升级为相互宝,定位为一款互联网大病互助计划,并发布4美图手机大英博物馆限量版来了!洛可可风格设计官图曝光4月23日,美图手机宣布将与世界四大博物馆之一的大英博物馆跨界,推出美图手机大英博物馆限量版,合作机型为美图手机最新旗舰机型美图V6,并曝光了新品官方渲染图,该机将于5月7日正式发扎克伯格在9家报纸道歉拿什么拯救你我的非死不可?因为泄露5000万用户信息,最近全球最大社交平台Facebook深陷危机。受此影响,3月19日Facebook的股价暴跌7,创下近四年以来最大单日跌幅,短短两天市值蒸发超过400亿揭露人性!面对一个被撞成重伤的路人,他们选择这样做从南京彭宇案开始,帮助身边的老弱病残彷佛成为了大部分人避之不及的事情。尤其是面对近几年频发的碰瓷事件,谁都不愿意去给自己找麻烦,伸出援手的代价变得越来越昂贵。最近,北京发生的一起交张近东指明苏宁金融未来,专注服务逆流而上苏宁有举行新春团拜会的传统,这是全体员工的新年开工第一课。大年初八,苏宁控股集团董事长张近东在新春团拜会上总结了苏宁金融的发展轨迹和取得的成果,指出了未来继续做专做精金融业务,做强
Linux基础知识Linux基本认知容量大小bit(位)Byte(字节,8位)KB(210,千字节)MB(兆字节)GB(吉字节)TBGbit(吉比特)自动补全命令或文件(夹)TAB复用之前的命令上下苹果硬件不如国产机?这是国产机编织的谎言,是对苹果的误解最近这几年,估计很多人都听过苹果硬件落后,不如国产机等这样的说法。甚至华为余承东曾经直接这样他们在硬件方面已经难与我们竞争,苹果目前缺乏产品硬件创新。而事实上,许多人也喜欢拿苹果的PC市场迎来新变化荣耀正成为行业新星据第三方权威调研机构报告显示,截至2021年11月份,在中国轻薄本市场,联想华硕戴尔惠普等传统PC厂商市场份额出现较大波动以荣耀华为为首的新兴品牌,其市场份额合计超过20,正在不断哥伦比亚大学教授大公司的法律套利圣诞购物季来临时,不管你是否拥有相关信仰,在每年这个时候几乎都无法抗拒购物和送礼的诱惑。不过最大的送礼者其实是非生命体我指的可不是人工智能,而是以常规企业形式存在的法人。各企业发放全链条的未来教育变革随着网络技术人工智能等信息技术的迅速发展,人类社会正在发生巨大变化。生活方式变了,社会需求变了,知识传播渠道变了,我们的教育如何发展,这是教育人必须认真面对深入思考的问题。变革是教被人说成疯子的投资家,他要建立300年屹立不倒的企业帝国孙正义何许人也,他是软银集团的总裁。他收购了ARM,投资过雅虎,阿里巴巴,还涉足了电力行业,被人评为鲁莽的投资家。他有着建立300年企业帝国的梦想,人们会觉得他是疯子。那他到底是个因为科技导致的内卷和躺平虎年有娱正文我直接说核心观点吧,不然没人愿意看。科技上不去,我们就会在原有的阶级疯狂竞争,这就是我们说的内卷,等一定的阶级固化,我们发现无论如何竞争也很难,进行阶级跨越,大部分能力小米12发布这么久了体验参数究竟怎样基本参数发布会时间2021年12月28日。上市日期2021年12月31日。机身材质黑色蓝色紫色金属中框,玻璃后壳原野绿金属中框,素皮后壳机身颜色紫色蓝色黑色原野绿指纹识别屏幕指纹识新年好物选什么?首选华为智选720全效空气净化器2春节将至,各大厂商开始纷纷推出新年好物,为新年的年货做好充足的准备。这一次华为智选也没有落下,在华为智选720全效空气净化器的基础上全面升级的华为智选720全效空气净化器2也赶在新iPhone15或全面采用自研基带,真的能够解决苹果的信号问题吗?尽管说,iPhone代表了手机行业非常高的水准,但是每一个iPhone用户都有一个苦衷,那就是iPhone的信号问题。在火车上电梯里,往往身边朋友的安卓手机都好好的,而自己的iPh为什么有的手机要砍掉8128GB版本?内行人说出其中缘由观察今年手机行业的朋友应该发现了,有部分手机取消了128GB版本,起步就是256GB,促使手机厂商做出这一决定的原因是什么?难道128GB版本已经不够用了吗?还是大部分用户已经抛弃