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

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();   } } }

不想用酷狗了,用什么软件听歌像酷狗也不要钱?目前很多音乐软件因为版权的限制找不到想听的歌曲甚至某些歌曲需要付费或者开通会员,今天我来给大家总结一些免费音乐比较多的音乐平台,大家可以在这些平台上听到更多的免费音乐哦!1。酷狗音耳鸣很严重,佩戴助听器能解决问题么?如果可以要怎么选择?耳鸣严重的话,一般情况下很难完全治愈,但是可以用掩盖疗法和习服疗法,也可以用助听器的耳鸣抑制功能进行控制,心态和心情也很重要你好,耳鸣很严重,戴助听器能不能解决问题?不知道你耳鸣多想买vivo手机,双十一怎么下单比较优惠?感谢您的阅读!我相信,双11的这一天大家都会去购买一些自己喜欢的产品,确实双11去购买很多产品都有很多的优惠,像vivo这个品牌的手机也有很多的优惠。一般来说我们建议到官方的viv目前华为手机,用的两年前芯片,为啥性能不输同行?友商没进步么?文小伊评科技看了很多回答,基本上都没有说到点子上。如果单从账面性能上来说,两年前的华为旗舰芯片的性能真的不输当下友商旗舰芯片么?这就是做梦,就算苹果的A系列芯片也做不到这种程度,华菜鸟CEO万霖创新方法保障价格和商家一起应对快递峰值整理姜雪芬全球快递云监工,付完尾款最幸福的莫过于坐等在家收包裹!双11狂欢,菜鸟在物流运输上已做好全方位准备。菜鸟成立八年,基于在整个物流的数字化智慧供应链全球化物流基础设施物流科没买的恭喜你!小米11Pro价格再次刷新,网友没白等一般情况之下,只有性能足够极致的旗舰手机才有资格去评选安卓机皇,搁到往年这个头衔会被华为和三星占据着,但由于今年的情况较为特殊,华为旗下的高端旗舰不支持5G功能,自然也是失去了评选耳鸣引起的耳聋能配助听器吗?助听器是一种补偿听力工具,不是特别的助听器对耳鸣是没有治疗作用的,但如果助听器选配得好,患者耳鸣的主频率又在助听器的放大频率范围内,耳鸣的响度又不是很重,有70的耳鸣是有可能得到掩现在的魅族和阿里巴巴公司什么关系?在2014年,阿里和魅族就谈成了投资意向,而真正公开是在2015年2月,魅族科技同阿里巴巴联合宣布,阿里巴巴集团投资魅族5。9亿美元,黄章占股53。68,阿里占股29。34。这两年苹果手机怎样分屏?数码轻松站来回答你的问题,苹果手机iOS12具有分屏功能,这个可能只在iPhoneX上才具有的功能。在iOS9。0以后的版本可依靠第三方软件实现手机的分屏多任务功能。第三方应用比如什么时候王者荣耀的数据可以互通?从目前来看,IOS和安卓区数据互通是不可能的。数据为什么要互通?王者荣耀作为目前最为火爆的手游,截止到上个月日活用户也有惊人的6000w,然而不同设备之间无法查看战绩,甚至没办法加推荐一下耳机?完成任务正文分割线本人使用过的耳机有,小米铁圈boseQC35二代小米air2AirPods二代。如果对音质不是太在在乎,建议买手机配套的,小米手机用小米耳机,苹果就用苹果手机,华
如何注销百度企业百家号?一注销百家号流程1电脑端登录百家号官网,进入账号中心,找到百家号设置账号设置,在百家号ID后边点击账号注销2按照提示注销协议确认百家号资产确认基础信息验证即可。重要提醒1)企业百家多款IOT设备齐聚,OPPOEncoR真无线耳机打头阵全新的OPPOEncoR真无线耳机,产品名取自Reno的R,代表为Reno手机用户提供具有定制化体验的真无线耳机。OPPOEncoR外观延续Reno对色彩的探索,结合冰透白和奶油蓝重大突破!科研人员发现硅28导热性能比普通硅高150,意义非凡广大数码爱好者朋友都知道,这两年有一个热度非常高的高频词那就是功耗,高通和联发科近年来所发布的手机处理器功耗普遍较高,由此导致手机极易发热,续航短,体验非常糟糕。以至于现在各大手机假如我获得了苹果公司1的股份,我还需要上班吗?你都有苹果1的股票了,就不要想和上班有关的事情了。截止到今天,苹果市值高达2。279万亿美元,总股本为161。85亿股,拥有其1的股份就等于有227。9亿美元,16185万股。现在热搜小米公司利润下滑超过50快手大规模封号iOS15。6发布快手打击网络招快手发布关于打击招的处罚公告,公告表示,近期,平台接到举报,发现有不法分子在直播间内隐晦发布网络招暗语及联系方式,诱导用户添加其微信QQ等社交账号进行线下交易。快手高如果让你做技术负责人,你会如何从0搭建公司后端技术栈如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈。今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。整个孟晚舟回国7个月后,加拿大又以怨报德,禁用中国5G,替美国蹚道在孟晚舟回国7个月后,当地时间5月19日,加拿大政府突然发表声明称,计划禁止使用中国的华为技术和中兴通讯的5G设备。加拿大外交部长兼工业部长商鹏飞表示,已经安装华为与中兴设备的供应特斯拉总裁马斯克一语道破,美国两党都是利益集团控制的木偶马斯克近期说,共和党前总统特朗普的班子,除了特朗普不会做事外,班子成员还能做点事。而民主党拜登的班子一事无成。他说,共和党是邪恶企业和狂热宗教分子控制的政党。而民主党过度的受工会和俄媒中国成为高新技术产业翘楚据俄罗斯自由媒体网5月19日报道,英国金融时报近日刊登一则令读者震惊的新闻中国在超级计算机领域走在世界最前列。中国正在制造最先进目前无出其右的新一代超算。金融时报援引美国知名超算专比亚迪CTB电池车身一体化技术面世首搭于海豹车型新能源汽车的结构创新不断演进,空间利用愈发紧凑,电池车身一体化技术吸引多家企业追赶布局。5月20日,比亚迪发布CTB电池车身一体化技术,将搭载于海豹车型。比亚迪执行副总裁廉玉波介绍什么时候买手机最划算?这三个时间点要抓住,不花一分冤枉钱购买手机的时候,多多少少都会面临,刚买的新机没使用多久,就面临降价的尴尬问题。其实数码产品都是有生命周期的,产品还是要卖出去才能挣钱,所以在特定的时间段里购买手机,会有很大的优惠力