开发中遇到的问题&解决方案(五)

简介: 在开发过程中,图片是必不可少的,除了图片的上传下载以外,图片压缩也是很常见的。 下面我们来看看hutool工具类里图片压缩的方法。


微信截图_20220531133417.png

前言

在开发过程中,图片是必不可少的,除了图片的上传下载以外,图片压缩也是很常见的。 下面我们来看看hutool工具类里图片压缩的方法。

一.ImgUtil,主要功能点包含缩放图像、切割图像、旋转、图像类型转换、彩色转黑白、文字水印、图片水印,下面详情看看这些功能 1.普通缩放图像,先在网上找一张图存放到本地,让我们来看看压缩的效果,指标当然是压缩前后的大小比对 代码就一行,0.8f为缩小比例字段。比例大于1时为放大,小于1大于0为缩小,下面演示的是压缩效果

ImgUtil.scale(FileUtil.file("C:/Users/yd/Desktop/test_pic.jpg"), FileUtil.file("C:/Users/yd/Desktop/test_pic_result.jpg"), 0.8f);
复制代码

压缩效果,最基础的压缩能够压缩一半大小,图片依然很清晰微信截图_20220531140316.png

具体的原理解读:

public static void scale(Image srcImg, File destFile, float scale) throws IORuntimeException {
Img.from(srcImg).setTargetImageType(FileUtil.extName(destFile)).scale(scale).write(destFile);
}
复制代码

1)先将图片文件用流的方式读取出来,然后setTargetImageType方法主要是用于设置处理后的图片

2)这种形式下的缩放后默认为jpeg格式,不关闭流

2.按长宽缩放,这种方法的缩放下目标长宽与原图不成比例会变形,上面1的缩放有可能会导致图片变形,下面来看看代码,参数里多了宽度和长度两个参数

public static Image scale(Image srcImg, int width, int height) {
   return Img.from(srcImg).scale(width, height).getImg();
}
复制代码

3.如果想缩放前后图片格式及比例不变形可以调用下面这个方法,算是1和2的结合,另外如果无法识别原图片默认JPG格式,而且可以使用fixedColor对处理的图片同时继续背景色填充,在一些场景下非常的实用

public static void scale(File srcImageFile, File destImageFile, int width, int height, Color fixedColor) throws IORuntimeException {
   Img.from(srcImageFile)
         .setTargetImageType(FileUtil.extName(destImageFile))
         .scale(width, height, fixedColor)
         .write(destImageFile);
}
复制代码

小结

关于图片缩放的方法,其实大同小异,区别点都是一下参数和小技巧,比如处理图片时填充背景色这种。

目录
相关文章
|
NoSQL Redis
Redis进阶-bind参数详解
Redis进阶-bind参数详解
849 0
|
Java 关系型数据库 MySQL
java连接mariaDB的设置
java连接mariaDB的设置
1129 0
|
10月前
|
JSON API 开发者
亚马逊商品 API接口,开发者详解与使用指南
亚马逊商品 API 是亚马逊平台为开发者提供的接口,支持获取商品信息、价格、库存、用户评价等数据。主要类型包括 Product Advertising API 和 Selling Partner API,适用于电商数据分析与管理。
|
缓存 监控 供应链
1688商品数据接口深度解析:从基础调用到企业级应用
本文介绍了通过1688官方API获取商品数据的应用场景和技术实现,涵盖供应商管理、采购比价、ERP对接及跨境选品等业务赋能。技术流程包括企业认证、接口调用和关键参数说明,并解析了响应数据结构。架构设计方面,提供了高并发解决方案、数据更新策略和缓存优化方案。同时,强调了合规与风控措施,如数据使用规范和接口安全防护。最后,针对常见问题给出了解决方案,并提出了数据应用扩展和监控体系搭建的进阶建议。该方案已成功应用于多个B2B供应链平台,日均处理超2000万条商品数据。
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
|
负载均衡 监控 算法
在Linux中,如何配置和管理LVS集群?
在Linux中,如何配置和管理LVS集群?
如何用Java写一个规范的http接口?
在平常的工作中,经常会遇到要写接口的情况,现在最常用的就是http接口,今天我就介绍一下如何去写一个规范的http接口。
1110 0
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
370 0
考研高数之无穷级数题型一:判断收敛性、求收敛半径以及收敛域和收敛区间(题目讲解)
考研高数之无穷级数题型一:判断收敛性、求收敛半径以及收敛域和收敛区间(题目讲解)
2823 0
|
算法 数据可视化 数据挖掘
详解DBSCAN聚类(上)
详解DBSCAN聚类
800 1
详解DBSCAN聚类(上)