前端上传的MultipartFile file//创建临时文件
OutputStream stream = null;
File toFile = null;
try {toFile = File.createTempFile("temp_file", ".jpg");toFile.deleteOnExit();stream = new FileOutputStream(toFile);stream.write(file.getBytes());}  finally {if (stream != null) {try {stream.close();} catch (IOException e) {// Nothing sane to do}}
}
/*** 根据指定大小和指定精度压缩图片** @param file      file 文件* @param desFileSize  指定图片大小,单位kb* @param accuracy     精度,递归压缩的比率,建议小于0.9* @param desMaxWidth  目标最大宽度* @param desMaxHeight 目标最大高度* @return 目标文件路径*/
public static byte[] commpressPicForScale(File file, long desFileSize, double accuracy, int desMaxWidth, int desMaxHeight) throws IOException {long srcFileSize = file.length();//获取图片信息BufferedImage bim = ImageIO.read(file);int srcWidth = bim.getWidth();int srcHeight = bim.getHeight();//先转换成jpgThumbnails.Builder builder = Thumbnails.of(file).outputFormat("jpg");// 指定大小(宽或高超出会才会被缩放)if (srcWidth > desMaxWidth || srcHeight > desMaxHeight) {builder.size(desMaxWidth, desMaxHeight);} else {//宽高均小,指定原大小builder.size(srcWidth, srcHeight);}// 写入到内存ByteArrayOutputStream baos = new ByteArrayOutputStream(); //字节输出流(写入到内存)builder.toOutputStream(baos);// 递归压缩,直到目标文件大小小于desFileSize// 输出到文件return commpressPicCycle(baos.toByteArray(), desFileSize, accuracy);}private static byte[] commpressPicCycle(byte[] bytes, long desFileSize, double accuracy) throws IOException {// File srcFileJPG = new File(desPath);long srcFileSizeJPG = bytes.length;// 2、判断大小,如果小于 xxx kb,不压缩;如果大于等于 xxx kb,压缩if (srcFileSizeJPG <= desFileSize * 1024) {return bytes;}// 计算宽高BufferedImage bim = ImageIO.read(new ByteArrayInputStream(bytes));int srcWdith = bim.getWidth();int srcHeigth = bim.getHeight();int desWidth = new BigDecimal(srcWdith).multiply(new BigDecimal(accuracy)).intValue();int desHeight = new BigDecimal(srcHeigth).multiply(new BigDecimal(accuracy)).intValue();ByteArrayOutputStream baos = new ByteArrayOutputStream(); //字节输出流(写入到内存)Thumbnails.of(new ByteArrayInputStream(bytes)).size(desWidth, desHeight).outputQuality(accuracy).toOutputStream(baos);return commpressPicCycle(baos.toByteArray(), desFileSize, accuracy);
}

上传文件,压缩临时图片,不做本地图片存储,用于传输相关推荐

  1. Springboot实现文件上传文件压缩和前端展示

    最近公司要写一个文件上传和下载的需求,之前写过很多次了,今天做个记录,希望能帮助到大家*Controller 代码* @RestController @RequestMapping("/up ...

  2. moba上传文件到服务器,图片上传到远程服务器上的方法

    图片上传到远程服务器上的方法 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows ...

  3. php获取上传文件的临时位置,php上传文件找不到临时文件夹(解决方法)

    问题: 找不到临时文件夹返回的错误代码为6 错误原因: 一.配置文件没有设置临时文件夹 二.临时文件夹没有或者上级文件夹没有相应的权限 处理方式: 找到PHP配置文件php.ini,找到以下代码 ;u ...

  4. php获取上传文件的临时位置,PHP上传 找不到临时文件夹的解决方法

    最近遇到这样的麻烦,找不到临时文件夹返回的错误代码为6 错误原因: 一.配置文件没有设置临时文件夹 二.临时文件夹没有或者上级文件夹没有相应的权限 处理方式: 找到PHP配置文件PHP.ini,找到以 ...

  5. Android中使用又拍云存储来上传文件(包括图片、音频和视频等)

    资料: 在又拍云存储上申请账号,然后购买一定的空间.(具体可上它的官网详细了解) 原理: 又拍云存储说白了就是一个中介.客户端把所需要上传的东西传到又拍云端服务器,云端服务器在通知到我们自己创建的服务 ...

  6. 流式上传文件到服务器磁盘,在ASP.NET中流式传输大文件上传

    您可以以完全自定义的方式处理上传,而无需使用缓冲 HttpRequest.GetBufferlessInputStream方法.基本上,您可以访问原始的传入数据,并随意随意使用它. 我刚刚创建了一个将 ...

  7. php获取上传文件的临时位置,PHP如何获取临时文件的目录路径

    PHP获取临时文件的目录路径,可以通过tempnam()和sys_get_temp_dir()函数来实现. 下面我们结合简单的代码示例,给大家介绍PHP获取临时文件的目录路径的方法. 代码示例如下:& ...

  8. 上传文件之前把图片显示出来

    var windowURL = window.URL || window.webkitURL;          var loadImg = windowURL.createObjectURL(doc ...

  9. 关于bootstrap-inputfile初始化加载图片,修改图片重新上传文件的坑

    关于bootstrap-inputfile初始化加载,上传文件的坑 图片的展示与上传,使用bootstrap-inputfile,但是由于自己遇到的问题网上查询不到,特此记录(第一次写,请多包涵) 打 ...

  10. http使用post上传文件时,请求头和主体信息总结

    请求头必须配置如下行: Content-Type' : 'multipart/form-data; boundary=---12321  boundary=---12321位文件的分界线 body如下 ...

最新文章

  1. 帝国cms 标签php,帝国cms常用标签总结
  2. Scala关系运算符的一览图
  3. 赠书福利 | 首本理论和实战结合的深度学习书籍
  4. 前端学习(2526):Vuex成果和展示
  5. Docker : Dockerfile 定制镜像
  6. 三类危险的TXT文件
  7. linhaifeng fullstack
  8. 解决RabbitMQ service is already present - only up...
  9. 科技互联网都有啥热点信息?爬取虎嗅5万篇文章告诉你
  10. 集成了谷歌翻译、百度翻译、有道翻译、和金山翻译的小助手软件
  11. 快速入门Sqlite数据库应用
  12. 楚留香手游服务器维护,楚留香手游3月1日更新全职业调整一览 6门派职业调整汇总...
  13. 为什么char+char为int类型 C/C++类型提升
  14. 亿级流量实验平台设计与实践
  15. 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)
  16. 计算机网络——校园网端口流量passby分析
  17. YYKit系列之——YYCache使用
  18. U盘、打印机泄密的隐患
  19. 关于zookeeper启动失败,个人解决经验
  20. HTML网页部分怎么与上面隔开,HTML网页制作讲义.ppt

热门文章

  1. react 的 render 函数
  2. Java并发——CountDownLatch
  3. BeautifulSoup的高级应用 之 find findAll
  4. fail-fast 机制是什么?(详解)
  5. MySQL的触发器原理应用,after和before的区别
  6. cc150第一章JAVA字符串和数组总结
  7. HTML侧面导航栏效果
  8. 【车牌识别】模板匹配车牌库识别【含GUI Matlab源码 416期】
  9. 铣床是什么?怎么分类
  10. 为打印到OneNote中的PDF添加链接目录