java中使用ImageIO.write 写入png图片过慢的调优方案。

白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:2873

{}
ImageIO方法的写入文件流方案 File file = new File("文件名"); URL url = new URL(file); BufferedImage bufferedImage = ImageIO.read(url); // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生...

ImageIO方法的写入文件流方案

 File file = new File("文件名");
URL url = new URL(file);
  BufferedImage bufferedImage = ImageIO.read(url);
  // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
  ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
 // 这里要注意formatName要缓存后缀名
 ImageIO.write(bufferedImage, suffix, byteArrayOut);
 byte[] data = byteArrayOut.toByteArray();
 // 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
 // anchor主要用于设置图片的属性
 HSSFClientAnchor anchor = new HSSFClientAnchor(0, // x缩放
       0, // y缩放
       1023, // 最大1023
       255, // 最大255
       (short) 5, // 宽度占几格 0开始
       i + 4, // 在第几行
       (short) 5, // 宽度占几格 0开始
       i + 4 // 第几列
 );
 patriarch.createPicture(anchor, wb.addPicture(data, XSSFWorkbook.PICTURE_TYPE_PNG));

InputStream方法的写入文件流方法(调优后的方法,通过InputStream替代ImageIO方法)

 File file = new File("文件名");
URL url = new URL(file);
  InputStream bufferedImage = url.openConnection().getInputStream();
  // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
  ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
  // 这里要注意formatName要缓存后缀名
  byte[] data = new byte[1024 * 300];
  int length = 0;
  while ((length = bufferedImage.read(data)) != -1){
     byteArrayOut.write(data, 0, length);
  }
  bufferedImage.close();
  byte[] data1 =byteArrayOut.toByteArray();
  // 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
  // anchor主要用于设置图片的属性
  HSSFClientAnchor anchor = new HSSFClientAnchor(0, // x缩放
        0, // y缩放
        1023, // 最大1023
        255, // 最大255
        (short) 5, // 宽度占几格 0开始
        i + 4, // 在第几行
        (short) 5, // 宽度占几格 0开始
        i + 4 // 第几列
  );
  patriarch.createPicture(anchor, wb.addPicture(data1, XSSFWorkbook.PICTURE_TYPE_PNG));

比对发现 调优后 时间从14秒缩短到3秒

原文地址:https://blog.csdn.net/weixin_44378416/article/details/122038553?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168904485416782427439218%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168904485416782427439218&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-21-122038553-null-null.142^v88^koosearch_v1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/9114d446608d41b68ad2ee1095922dfc

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复