在工作中,会设计到文件上传等常用功能,但是有时候图片上传到服务器很很大,有的甚至有几十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图片上传压缩相关推荐

  1. java图片上传压缩处理

    过去做的项目都是针对企业级应用,第一次开发新闻版块图片上传的功能,需要解决用户上传图片后,按照用户规定的尺寸大小或者按照图片比例,对图片进行压缩. 自己试写的工具类,写的时候考虑了几个关键点: 1.图 ...

  2. 图片上传压缩android,android 图片上传压缩常见问题分析

    图片的上传与压缩是android经常需要用到的步骤,那么,如何解决上传图片oom问题呢?android 图片上传压缩常见问题分析,希望可以帮助大家更加的了解android 图片方面的困惑. 下面,是我 ...

  3. java图片上传(mvc)

    最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...

  4. uniapp 微信小程序开发 图片上传压缩

    uniapp 微信小程序开发 图片上传压缩 安卓上传图片并压缩 思路 全部代码 安卓上传图片并压缩 由于后端接口对图片的大小有限制,所以在上传图片是需要压缩处理: uni.chooseImage({c ...

  5. vue+vant图片上传压缩图片大小

    vue+vant图片上传压缩图片大小 可能在项目中大家都会遇到文件上传的需求,比如头像,图片等,但是太大的文件上传会给服务器造成很大大压力,那么我们就需要压缩上传的文件 其实这儿所说的压缩,就是图片重 ...

  6. Java 图片上传后为什么会自动旋转90度?

    问题: 用户反馈上传后的图片方向不对,起初怀疑是本身图片方向有问题,但是用windows图片查看器打开图片方向是"正常"显示的? 分析: windows默认的图片查看器已经帮我们自 ...

  7. java图片上传和加水印

    java图片上传和加水印 简介 大家在做项目开发的时候,经常会用到图片上传,有些牵扯到版权或者私密的图片需要进行添加上水印,小编在总结了前人的经验之后,总结了一份element ui+spring b ...

  8. java图片上传保存至服务器并返回可下载的URL

    java图片上传保存至服务器并返回可下载的URL 1.需求来源 2.解决思路 3.开始干活(直接上代码) 4.总结 1.需求来源 上周要做一个功能,需求是: 微信小程序开发的程序会传一张图片到后台ja ...

  9. Java图片上传实现方式MultipartFile

    Java图片上传实现方式 例举 MultipartFile 处理图片上传方式 2021年8月3日 核心代码块 public Result uploadImg(MultipartFile multipa ...

最新文章

  1. python怎么安装requests库-小白安装python的第三方库:requests库
  2. pycharm 调试(debug)模式时界面上的 mute breakpoint 是什么意思?(239)
  3. linux 替换文件中的内容/查找、替换、全部替换
  4. 来和 webpack 谈场恋爱吧!这课程好甜!
  5. Angularjs1.x 中的 service,factory,provider,constant,value
  6. 经验证过的跨线程更新辅助类MyInvokeHelper
  7. WinForm邮件内容编辑器的简单实现
  8. 十二岁孩子学编程用c语言好吗,太原12岁学编程
  9. Qt工作笔记-QLineEdit中使用setValidator里面的坑
  10. QT每日一练day16:QMessageBox消息对话框
  11. router优点 vue_Vue 出场率99%的面试题
  12. bootstrap页面布局
  13. 网页无插件播放RTSP流媒体
  14. 代码随想录怎么样?我是这样刷的
  15. java输出格林威治时间_Java之格林威治时间格式转换成北京时间格式
  16. vscode远程开发环境配置
  17. [转载] DBA职业生涯规划:八步打造高级DBA专家
  18. ERROR 1130 (HY000): Host XXX is not allowed to connect to this MySQL server
  19. 【技术分享】 ​IE浏览器漏洞利用技术的演变 ( 二 )
  20. 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

热门文章

  1. 使用最小二乘法拟合二次函数
  2. Ubuntu Thinkpad E440 sdcard reader 驱动安装
  3. 联想k920 android7,联想 K920 Vibe Z2 Pro 魔趣 极度流畅 简约稳定 超多设置 优化省电...
  4. 【学习笔记】阿里云天池龙珠计划SQL训练营-Task06:综合练习题-10道经典题目
  5. java.awt中文乱码_Java AWT窗体中文乱码问题解决-百度经验
  6. 腾讯云服务器操作系统TencentOS安装
  7. 数字逻辑笔记5丨2.3逻辑表达式的形式与转换
  8. SpringBoot:整合Redis(概述,数据类型,持久化,RedisTemplate)
  9. 移动端常用的几种适配方案
  10. 计算机教育叙事,计算机在小学语文教学中运用的教育叙事