如何恢复压缩过的照片(压缩上传的图片并返回图片路径)

首页教程更新时间:2022-12-02 20:35:50

由于现在手机像素普遍较高,随手拍一张图片都6、7M,十几兆的图片也并不罕见。如果这些未处理的图片直接随数据上传向服务器,不但会占用更多的存储空间,而且用户也要等更久的时间,体验性会差很多,同时更长的传输时间,也加大了问题发生的概率,直接决定了系统的生命力,可谓是生死攸关,基于这些情况,压缩图片并上传的需求应运而生。

如何恢复压缩过的照片,压缩上传的图片并返回图片路径(1)

开源字节使用Thumbnails去掉图片冗余信息,有效压缩图像,同时又不会损害图像效果。同时直接返回图片路径,方便前台调用。代码如下:

/** * 通用上传请求 */ @PostMapping("/common/upload") public AjaxResult uploadFile(MultipartFile file) throws Exception { try { // 真实文件名 String realName = file.getOriginalFilename(); // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String url = domain fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); ajax.put("realName", realName); ajax.put("url", url); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * 文件上传 * * @param baseDir 相对应用的基目录 * @param file 上传的文件 * @param allowedExtension 上传文件类型 * @return 返回上传成功的文件名 * @throws FileSizeLimitExceededException 如果超出最大大小 * @throws FileNameLengthLimitExceededException 文件名太长 * @throws IOException 比如读写文件出错时 * @throws InvalidExtensionException 文件校验异常 */ public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension) throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException, InvalidExtensionException { int fileNamelength = file.getOriginalFilename().length(); if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) { throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); } assertAllowed(file, allowedExtension); String fileName = extractFilename(file); File desc = getAbsoluteFile(baseDir, fileName); // 如果是图片,则压缩 if (ImageCheck(file)) { // 图片大小;其中file.length()获取的是字节,除以1024可以得到以kb为单位的文件大小 long size = file.getSize() / DEFAULT_SIZE; // 图片对象 BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); // 图片宽度 int width = bufferedImage.getWidth(); // 使用Thumbnailator实现图片压缩,通过大小与尺寸的判断,保证图片最优 float scale = 1f; float quality = 1f; // 如果像素宽度大于3000,则缩放到原图一半大小,否则不改变尺寸 if(width > 3000){ scale = 0.5f; } // 如果像素宽度大于1500,则缩放到原图80%大小,否则不改变尺寸 if(width > 1500){ scale = 0.8f; } // 如果图片大于5000kb,则压缩到原图的50%质量 if(size > 5000){ quality = 0.5f; } // 如果图片大于1000kb,则压缩到原图的80%质量 if(size > 1000){ quality = 0.8f; } // 去掉图片冗余信息后可以有效压缩图像,同时又不会损害图像的有效信息。 Thumbnails.of(file.getInputStream()) .scale(scale) // 值在0到1之间,1f就是原图大小,0.5就是原图的一半大小 .outputQuality(quality) // 值也是在0到1,越接近于1质量越好,越接近于0质量越差 .toFile(desc); }else{ file.transferTo(desc); } String pathFileName = getPathFileName(baseDir, fileName); return pathFileName; }

如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/217.html



,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
公路货车运输模拟器
公路货车运输模拟器
下载
天域至尊内购版
天域至尊内购版
下载
文件校验机吾爱破解专用版v2.0免费版
文件校验机吾爱破解专用版v2.0免费版
下载
招商证券Mac版
招商证券Mac版
下载
ColorCopV5.4.3(适合网页设计师、多用途的颜色采取器)汉化绿色特别版
ColorCopV5.4.3(适合网页设计师、多用途的颜色采取器)汉化绿色特别版
下载
侠客西游传
侠客西游传
下载
丰e足食顺丰
丰e足食顺丰
下载
深海迷航浮动货物箱MOD
深海迷航浮动货物箱MOD
下载
上古卷轴5重制版法术偷取MOD
上古卷轴5重制版法术偷取MOD
下载
大厦管理者全版本5项修改器
大厦管理者全版本5项修改器
下载
泰山互惠
泰山互惠
下载
怪物猎人世界青色爆鳞龙双锤MOD
怪物猎人世界青色爆鳞龙双锤MOD
下载
趣溜溜
趣溜溜
下载
重庆门窗
重庆门窗
下载
必虎WiFi安全管家
必虎WiFi安全管家
下载
帮农批农友圈
帮农批农友圈
下载