java图片的导出,并压缩

java 压缩包jar包使用的是commons-compress-1.6.jar

/*** 导出图片* @param request* @param response*/@RequestMapping("/exportPicture")public void exportPicture(HttpServletRequest request,HttpServletResponse response) throws Exception {//定义根路径String rootPath = request.getRealPath("/");//@Test测试,rootPath 可直接写路径 eg://String rootPath = "D:\\a.jpg";//创建文件File file = new File(rootPath+"temp_download");//判断文件是否存在,如果不存在,则创建此文件夹if(!file.exists()){file.mkdir();}String name = "图片压缩包下载";String fileName = name+new Date().getTime();String zipFileName = fileName + ".zip";File zipFile = null;String path = rootPath + "temp_download";//调用工具类获取图片byte[] data = ImageByteUtil.image2byte("F:\\blank.jpg");//new一个文件对象用来保存图片,默认保存当前工程根目录  if(data != null){File imageFile = new File(path+File.separator+fileName+".jpg");  //创建输出流  FileOutputStream outStream = new FileOutputStream(imageFile);  //写入数据  outStream.write(data);  //关闭输出流  outStream.close();}try {//获取创建好的图片文件File imageFile = new File(path+"/"+fileName+".jpg");// 打成压缩包zipFile = new File(path + "/" + zipFileName);FileOutputStream zipFos = new FileOutputStream(zipFile);ArchiveOutputStream archOut = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, zipFos);if (archOut instanceof ZipArchiveOutputStream) {ZipArchiveOutputStream zos = (ZipArchiveOutputStream) archOut;ZipArchiveEntry zipEntry = new ZipArchiveEntry(imageFile, imageFile.getName());zos.putArchiveEntry(zipEntry);zos.write(FileUtils.readFileToByteArray(imageFile));zos.closeArchiveEntry();zos.flush();zos.close();}// 压缩完删除txt文件if (imageFile.exists()) {imageFile.delete();}// 输出到客户端OutputStream out = null;out = response.getOutputStream();response.reset();response.setHeader("Content-Disposition", "attachment;filename=" + new String(zipFileName.getBytes("GB2312"), "ISO-8859-1"));response.setContentType("application/octet-stream; charset=utf-8");response.setCharacterEncoding("UTF-8");out.write(FileUtils.readFileToByteArray(zipFile));out.flush();out.close();//测试就不要输出到客户端了,把下面这段删除压缩包的代码注释掉,//就能看到效果了// 输出客户端结束后,删除压缩包if (zipFile.exists()) {zipFile.delete();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ArchiveException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

附工具类 ImageByteUtil 图片与byte数组互转util

public class ImageByteUtil {/*** 实现图片与byte数组之间的互相转换* @param args*/public static void main(String[] args) {//定义路径String path = "F:\\blank.jpg";byte[] data = image2byte(path);System.out.println(data.length);}/*** 将图片转换为byte数组* @param path 图片路径* @return*/public static byte[] image2byte(String path){//定义byte数组byte[] data = null;//输入流FileImageInputStream input = null;try {input = new FileImageInputStream(new File(path));ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buf = new byte[1024];int numBytesRead = 0;while ((numBytesRead = input.read(buf)) != -1) {output.write(buf, 0, numBytesRead);}data = output.toByteArray();output.close();input.close();}catch (FileNotFoundException ex1) {ex1.printStackTrace();}catch (IOException ex1) {ex1.printStackTrace();}return data;}//byte数组到图片public void byte2image(byte[] data,String path){if(data.length<3||path.equals("")) return;try{FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));imageOutput.write(data, 0, data.length);imageOutput.close();System.out.println("Make Picture success,Please find image in " + path);} catch(Exception ex) {System.out.println("Exception: " + ex);ex.printStackTrace();}}//byte数组到16进制字符串public String byte2string(byte[] data){if(data==null||data.length<=1) return "0x";if(data.length>200000) return "0x";StringBuffer sb = new StringBuffer();int buf[] = new int[data.length];//byte数组转化成十进制for(int k=0;k<data.length;k++){buf[k] = data[k]<0?(data[k]+256):(data[k]);}//十进制转化成十六进制for(int k=0;k<buf.length;k++){if(buf[k]<16) sb.append("0"+Integer.toHexString(buf[k]));else sb.append(Integer.toHexString(buf[k]));}return "0x"+sb.toString().toUpperCase();} }

本文复制参考:http://blog.csdn.net/u012151597/article/details/52945560?locationNum=4&fps=1
感谢作者”洋葱花瓣”的整理.

java图片的导出,并压缩相关推荐

  1. java图片压缩工具类(指定压缩大小)

    1:先导入依赖 <!--thumbnailator图片处理--><dependency><groupId>net.coobird</groupId>&l ...

  2. Java图片压缩工具类(递归压缩到指定大小范围)

    Java图片压缩工具 工具类使用场景 公司做人脸识别项目时候需要上传学生.家长.教师.访客的正面照图片,但是人脸识别机器有限制只接收200KB-1M的图片,所以必须做图片压缩到指定范围大少. APP上 ...

  3. java导出excel压缩包_java动态导出excel压缩成zip下载的方法

    本文实例为大家分享了java动态导出excel压缩成zip下载的具体代码,供大家参考,具体内容如下 package pack.java.io.demo; import java.io.Buffered ...

  4. [Java]图片压缩

    Java中内置的压缩图片有两种方式: 通过Image的getScaledInstance方法将图片尺寸进行压缩,它的压缩策略有: SCALE_DEFAULT 默认图像缩放算法 SCALE_FAST 缩 ...

  5. java 图片压缩100k_java实现图片压缩

    简介 我们在项目中经常会遇到图片上传的需求,如商品图片,但图片太大的话,在客户端加载太慢影响用户体验,所有一般会将图片进行压缩. 实现 原图 添加依赖 net.coobird thumbnailato ...

  6. java 中导出word后压缩文件_Java批量导出word压缩后的zip文件案例

    一.js代码,由于参数比较大所以利用form表单使用post导出 function export_word(){ var selectedRows = $("#dg").datag ...

  7. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  8. java中Excel导出echart图片

    java中Excel导出echart图片 1.在生成echart的前端代码生成图片代码后Echart.setOption(captestRcapEchartOption, true);后面加上以下代码 ...

  9. Java使用模板导出带图片word文档

    之前已经写过一个 Java使用模板导出Word文档 由于系统升级,模板得添加图片,这个时候遇到了一个比较恶心的问题特地发文记录一下. 先把老模板翻出来 **.ftl 然后右键用wps或者office打 ...

最新文章

  1. java开发的简易学生成绩管理系统
  2. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天
  3. BCH进入广告行业,将会碰撞出什么样的火花
  4. MYSQL内置函数总结
  5. 运行时异常与一般异常区别
  6. Java集合:ArrayList和LinkedList区别?
  7. js 实现 复制 功能 (zeroclipboard)
  8. Python 装饰器详解(中)
  9. python出现的意义_[转]Python中下划线以及命名空间的意义
  10. PAT乙级 1027 打印沙漏
  11. 数据库中的超码、候选码、主码
  12. decode函数_「实践」云函数 + API,你也可以做个天气信息系统
  13. 8盏流水灯反向闪烁c语言,课程设计(论文)_利用8255A芯片实现流水灯闪烁设计.doc...
  14. linux命令别名永久生效
  15. 结构化CSS设计思维
  16. MCS-51单片机汇编语言程序设计
  17. java实例 之 商品管理系统
  18. java 16进制转中文乱码
  19. 面向对象的分析(Object Oriented Analysis,OOA)模型有三种:功能模型 (用例图)对象模型(类图) 动态模型(状态图)
  20. 《如何有效阅读一本书》书评

热门文章

  1. ASP.NET MVC教程五:ASP.NET MVC中的路由
  2. Git missing Change-Id in commit message footer解决方法
  3. 需要多长时间达到一个本科毕业生刚毕业的水平。
  4. YYT 0659 - 2008全自动凝血分析仪
  5. JavaScript之正方教务系统自动化教评[插件-转载]
  6. [问题解决]同时显示多个Notification时PendingIntent的Intent被覆盖?
  7. Debian卸载iceweasel
  8. ChildWindow在Open时旋转出现
  9. 【剑指offer】面试题32:从上到下打印二叉树(java)
  10. dram和nand哪个难生产_仅300名员工,年产7台,订单排到5年后,比光刻机还难买...