图片水印 压缩图片 压缩图片200k以内的scale值算法 hutool 附代码
图片操作
情形
很多情况下,需求上对某个图片进行压缩或者添加水印,我们都会使用到这些图片处理的工具包。在大多工具包中,hutool无非是最好用的。
依赖
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.20</version>
</dependency>
缩放方法
ImgUtil.scale(File srcImageFile, File destImageFile, float scale);
这里的scale是缩放比例范围在[0,1]单精度值,数值越小压缩力度越大,在大多场景中,我们可能会对上传的图片做一个压缩处理,用于首页列表的展示,通常是在200KB左右,比如用户上传一个高达10MB的图片,当然不可以直接用于展示在客户端,那么我们可以将其压缩到200KB左右的链接用于展示,来减小流量浪费和服务器响应。这里的scale是一个经验值,通常是要花费大量的压缩实验的得出来的经验值。我也是花费了前后三十多次的出来压缩到200KB的scale的值,直接放出来↓
200KB的scale值算法
/*** 获取到200kb左右的压缩scale值* 一一手动校验值(经验值)** @param srcSize 文件长度* @return scale*/private static float scale200K(long srcSize) {float scale = 0f;if (srcSize < 200 * 1000) {scale = 1.00f;} else if (srcSize < 500 * 1000) {scale = 0.57f;} else if (srcSize < 700 * 1000) {scale = 0.47f;} else if (srcSize < 1 * 1000 * 1000) {scale = 0.37f;} else if (srcSize < 2 * 1000 * 1000) {scale = 0.25f;} else if (srcSize < 4 * 1000 * 1000) {scale = 0.17f;} else if (srcSize < 5 * 1000 * 1000) {scale = 0.13f;} else if (srcSize < 10 * 1000 * 1000) {scale = 0.10f;} else {scale = 0.01f;}return scale;}
添加水印
ImgUtil.pressImage(File srcImageFile, File destImageFile, Image pressImg, int x, int y, float alpha)
这个alpha是透明度值,越小越透明。
在线API
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
