java图片上传压缩
在工作中,会设计到文件上传等常用功能,但是有时候图片上传到服务器很很大,有的甚至有几十MB,我们前端加载图片就很慢了,甚至这些图片会占用服务器空间,积压服务器;
如何处理?
Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作
第一步:引入依赖包
<!-- 图片缩略图 --><dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency>
第二步:在上传图片到Linux服务器成功之后我们再去处理图片,我这里以Linux系统为案例
加上这段代码即可: Thumbnails.of(new File[] { new File(UPLOAD_PATH + fileName) })
.scale(1f).outputQuality(0.25f)
.toFile(new File(UPLOAD_PATH + fileName));//压缩之后重新覆盖图片
之前为20MB的压缩之后如果高度和宽度不进行压缩:压缩后图片大小为1.1MB
public static List<String> listFileNames(InputStream inputstream,String fileName) {List<String> list = new ArrayList<String>();ChannelSftp sftp = null;Channel channel = null;Session sshSession = null;try {JSch jsch = new JSch();jsch.getSession(username, url, port);sshSession = jsch.getSession(username, url, port);sshSession.setPassword(password);Properties sshConfig = new Properties();sshConfig.put("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);sshSession.connect();channel = sshSession.openChannel("sftp");channel.connect();System.out.println("连接远程服务器成功");sftp = (ChannelSftp)channel;sftp.cd(UPLOAD_PATH);sftp.put(inputstream, fileName);//图片上传成功//new File[] { new File(UPLOAD_PATH + fileName) }:成功之后获取上传到服务器的图片,等比压缩,高度和宽度不变,清晰度也不变//--------------图片等比压缩------------------//UPLOAD_PATH="/data/yby-img-file/";Thumbnails.of(new File[] { new File(UPLOAD_PATH + fileName) }).scale(1f).outputQuality(0.25f).toFile(new File(UPLOAD_PATH + fileName));} catch (Exception e) {e.printStackTrace();} finally {closeChannel(sftp);closeChannel(channel);closeSession(sshSession);}return list;}
如果想按照大小进行压缩
//不按比例,就按指定的大小进行缩放Thumbnails.of(fromPic).size(100, 100).keepAspectRatio(false).toFile(toPic);//或者Thumbnails.of(fromPic).forceSize(100,100).toFile(toPic);
其它更详细功能使用介绍地址:
http://blog.csdn.net/chenleixing/article/details/44685817
http://www.qzblog.net/blog/220
http://blog.csdn.net/wangpeng047/article/details/17610451
java图片上传压缩相关推荐
- java图片上传压缩处理
过去做的项目都是针对企业级应用,第一次开发新闻版块图片上传的功能,需要解决用户上传图片后,按照用户规定的尺寸大小或者按照图片比例,对图片进行压缩. 自己试写的工具类,写的时候考虑了几个关键点: 1.图 ...
- 图片上传压缩android,android 图片上传压缩常见问题分析
图片的上传与压缩是android经常需要用到的步骤,那么,如何解决上传图片oom问题呢?android 图片上传压缩常见问题分析,希望可以帮助大家更加的了解android 图片方面的困惑. 下面,是我 ...
- java图片上传(mvc)
最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...
- uniapp 微信小程序开发 图片上传压缩
uniapp 微信小程序开发 图片上传压缩 安卓上传图片并压缩 思路 全部代码 安卓上传图片并压缩 由于后端接口对图片的大小有限制,所以在上传图片是需要压缩处理: uni.chooseImage({c ...
- vue+vant图片上传压缩图片大小
vue+vant图片上传压缩图片大小 可能在项目中大家都会遇到文件上传的需求,比如头像,图片等,但是太大的文件上传会给服务器造成很大大压力,那么我们就需要压缩上传的文件 其实这儿所说的压缩,就是图片重 ...
- Java 图片上传后为什么会自动旋转90度?
问题: 用户反馈上传后的图片方向不对,起初怀疑是本身图片方向有问题,但是用windows图片查看器打开图片方向是"正常"显示的? 分析: windows默认的图片查看器已经帮我们自 ...
- java图片上传和加水印
java图片上传和加水印 简介 大家在做项目开发的时候,经常会用到图片上传,有些牵扯到版权或者私密的图片需要进行添加上水印,小编在总结了前人的经验之后,总结了一份element ui+spring b ...
- java图片上传保存至服务器并返回可下载的URL
java图片上传保存至服务器并返回可下载的URL 1.需求来源 2.解决思路 3.开始干活(直接上代码) 4.总结 1.需求来源 上周要做一个功能,需求是: 微信小程序开发的程序会传一张图片到后台ja ...
- Java图片上传实现方式MultipartFile
Java图片上传实现方式 例举 MultipartFile 处理图片上传方式 2021年8月3日 核心代码块 public Result uploadImg(MultipartFile multipa ...
最新文章
- python怎么安装requests库-小白安装python的第三方库:requests库
- pycharm 调试(debug)模式时界面上的 mute breakpoint 是什么意思?(239)
- linux 替换文件中的内容/查找、替换、全部替换
- 来和 webpack 谈场恋爱吧!这课程好甜!
- Angularjs1.x 中的 service,factory,provider,constant,value
- 经验证过的跨线程更新辅助类MyInvokeHelper
- WinForm邮件内容编辑器的简单实现
- 十二岁孩子学编程用c语言好吗,太原12岁学编程
- Qt工作笔记-QLineEdit中使用setValidator里面的坑
- QT每日一练day16:QMessageBox消息对话框
- router优点 vue_Vue 出场率99%的面试题
- bootstrap页面布局
- 网页无插件播放RTSP流媒体
- 代码随想录怎么样?我是这样刷的
- java输出格林威治时间_Java之格林威治时间格式转换成北京时间格式
- vscode远程开发环境配置
- [转载] DBA职业生涯规划:八步打造高级DBA专家
- ERROR 1130 (HY000): Host XXX is not allowed to connect to this MySQL server
- 【技术分享】 ​IE浏览器漏洞利用技术的演变 ( 二 )
- 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
热门文章
- 使用最小二乘法拟合二次函数
- Ubuntu Thinkpad E440 sdcard reader 驱动安装
- 联想k920 android7,联想 K920 Vibe Z2 Pro 魔趣 极度流畅 简约稳定 超多设置 优化省电...
- 【学习笔记】阿里云天池龙珠计划SQL训练营-Task06:综合练习题-10道经典题目
- java.awt中文乱码_Java AWT窗体中文乱码问题解决-百度经验
- 腾讯云服务器操作系统TencentOS安装
- 数字逻辑笔记5丨2.3逻辑表达式的形式与转换
- SpringBoot:整合Redis(概述,数据类型,持久化,RedisTemplate)
- 移动端常用的几种适配方案
- 计算机教育叙事,计算机在小学语文教学中运用的教育叙事