失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 图片上传 图片压缩大小

图片上传 图片压缩大小

时间:2023-05-18 08:42:36

相关推荐

图片上传 图片压缩大小

做项目的时候上传总是避免不了,如果上传的图片过大,占用空间会大,前端在进行加载展示的时候耗时也会长

压缩大小分为很多种:剪裁图片,等比缩放,降低质量等…

个人感觉,降低图片质量和之前差别不大,如果图片有什么特殊的大小要求或其他要求什么的,可以按照需要进行自行选择

公共代码

//在yml和properties里面配置,这样的也可以放到nacos,哪个都可以@Value("${file.upload.path}")private String fileUploadPath;@PostMapping("test")public void test(@RequestBody(required = false) MultipartFile multipartFile) throws IOException {//模拟上传到服务器//上传之后的文件File file = new File(fileUploadPath,multipartFile.getOriginalFilename());//上传multipartFile.transferTo(file);//获取文件名称String originalFilename = multipartFile.getOriginalFilename();//不带后缀的文件名String headName = originalFilename.substring(0, originalFilename.indexOf("."));//获得文件的扩展名(后缀名),扩展名不带“.”String extName = FileNameUtil.extName(originalFilename);File smallFile = new File(fileUploadPath,"small"+multipartFile.getOriginalFilename());File smallFileJpg= new File(fileUploadPath,"small"+headName+".jpg");Date sd = new Date();//图片操作处/**代码在这里**///图片操作处Date ed = new Date();System.out.println(ed.getTime()-sd.getTime());}

Hutool

pom依赖:

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.1</version></dependency>

缩放图片:

相比之前图片大小发生改变

//图片操作处ImgUtil.scale(FileUtil.file(file),FileUtil.file(smallFile),0.5f//缩放比例);//图片操作处

裁剪图片

Rectangle(x, y, width, height)

从图片左上角开始,x为横向移动距离,y为竖向

width为取得宽度(从左往右),height为取得高度(从上往下)

ImgUtil.cut(FileUtil.file(file),FileUtil.file(smallFile),//裁剪的矩形区域new Rectangle(0, 0, 0, 0));

图片类型转换

支持GIF->JPG、GIF->PNG、PNG->JPG、PNG->GIF(X)、BMP->PNG等

ImgUtil.convert(FileUtil.file(file),FileUtil.file(smallFileJpg));

图片压缩

注:图片压缩只支持Jpg文件,所以需要用到图片类型转换,也可以自定义

if ("jpg".equals(extName)){Img.from(FileUtil.file(file)).setQuality(0.5)//压缩比率.write(FileUtil.file(smallFile));}else {Img.from(FileUtil.file(file)).setQuality(0.5)//压缩比率.write(FileUtil.file(smallFileJpg));}

Thumbnails

pom依赖:

<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>[0.4,0.5)</version></dependency>

压缩图片

降低图片质量

Thumbnails.of(file).scale(1f).outputQuality(0.5f)//0-1数字越高,质量越高,占用越大.toFile(smallFileJpg);

还有一种方式

Thumbnails.of(file).scale(1f).toFile(smallFileJpg);

缩放图片

Thumbnails.of(file).scale(0.5f).toFile(smallFileJpg);

所有的测试都会有误差200ms左右,读写速度可能会影响,上传服务器会受到网络的影响

如果觉得《图片上传 图片压缩大小》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。