当前位置: 首页 > news >正文

java导入excel图片处理

直接看代码吧,主要逻辑吧excel的图片拿到 压缩上传获取url

 // 将文件转成XSSFWorkbook工作簿XSSFWorkbook wb = new XSSFWorkbook(uploadFile);// 获取工作薄中第一个excel表格XSSFSheet sheet = wb.getSheetAt(0);// 核心:::获取excel表格中所有图片,处理图片上传到oss  key:行号-列号Map<String, List<String>> picturesMap = getPictures(sheet);public Map<String, List<String>> getPictures(XSSFSheet xssfSheet) throws IOException {Map<String, List<String>> maps = new LinkedHashMap<>();List<XSSFShape> list = xssfSheet.getDrawingPatriarch().getShapes();for (int i = 0; i < list.size(); i++) {XSSFPicture picture = (XSSFPicture) list.get(i);// 行号-列号XSSFClientAnchor xssfClientAnchor = (XSSFClientAnchor) picture.getAnchor();// 获取图片XSSFPictureData pdata = picture.getPictureData();byte[] data = pdata.getData();InputStream inputStream = new ByteArrayInputStream(data);byte[] scalePicLater = scalePics(inputStream,0.5,0.5);String url = ossFactory.build().upload(new ByteArrayInputStream(scalePicLater), IdUtil.objectId() + ".jpg");inputStream.close();// 行号-列号String key = xssfClientAnchor.getRow1() - 1 + "-" + xssfClientAnchor.getCol1();if (maps.containsKey(key)) {List<String> strUrl = maps.get(key);strUrl.add(url);maps.put(key, strUrl);} else {List<String> strUrl = new ArrayList<>();strUrl.add(url);maps.put(key, strUrl);}}return maps;}public static byte[] scalePics(InputStream inputStream, double accuracy,double scale) throws IOException {// 压缩图片并保存到临时文件中File tempFile = File.createTempFile("thumbnail", ".jpg");Thumbnails.of(inputStream).scale(scale).outputQuality(accuracy).toFile(tempFile);// 读取临时文件的字节流设置到输出流中InputStream tempInputStream = new FileInputStream(tempFile);byte[] buffer = new byte[tempInputStream.available()];tempInputStream.read(buffer);tempInputStream.close();// 删除临时文件tempFile.delete();// 下载到本地,// BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Code\\upload\\1.jpg"));// bos.write(buffer);// bos.close();return buffer;}
http://www.lryc.cn/news/118295.html

相关文章:

  • 【Rust】Rust学习 第四章认识所有权
  • 学习C语言第三天 :关系操作符、逻辑操作符
  • Jenkins自动化打包脚本
  • 一百五十、Kettle——Kettle官网下载地址
  • 使用 Visual Studio Code 调试 CMake 脚本
  • 【云原生】Docker 详解(二):Docker 架构及工作原理
  • 微服务 云原生:基于 Gogs + Drone 实现 CI/CD 自动化
  • ADO.NET之SQL Server
  • Nginx负载均衡(重点)
  • 第一章 SpringBoot入门
  • JavaScript Es6_2笔记 (深入对象 + 内置构造函数 + 包装类型)+包含实例方法
  • 尼科彻斯定理
  • 主数据管理案例-中国外运
  • 改进DevSecOps框架的 5 大关键技术
  • uni-app之app上传pdf类型文件
  • bash: sudo: command not found的解决方法 | 安装sudo
  • 电脑合上盖子无线网络不会断开
  • 【从零开始学习JAVA | 第四十篇】了解线程池
  • axios如何取消请求,其原理是什么?
  • 消息中间件 Asio (C++)
  • 3.4 网络安全管理设备
  • 前端高级面试题-JS
  • AcWing 1564:哈希 ← 只具有正增量的二次探测法
  • 什么是媒体代发布?媒体代发布注意事项
  • docker版jxTMS使用指南:使用jxTMS采集数据之二
  • 系列六、Springboot操作RocketMQ
  • 【jupyter异常错误】Kernel started:No module named ipykernel_launcher
  • 使用langchain与你自己的数据对话(五):聊天机器人
  • 爬虫与搜索引擎优化:通过Python爬虫提升网站搜索排名
  • 2024软考系统架构设计师论文写作要点