java – 字节数组缓冲图像转换速度慢
发布时间:2020-12-14 05:46:50 所属栏目:Java 来源:网络整理
导读:我有一个简单的服务器端代码,它接收一个表示JPEG格式图像的字节数组,并返回图像的尺寸. public String processImage(byte[] data) { long startTime = System.currentTimeMillis(); ByteArrayInputStream stream = new ByteArrayInputStream(data); Buffered
我有一个简单的服务器端代码,它接收一个表示JPEG格式图像的字节数组,并返回图像的尺寸.
public String processImage(byte[] data) { long startTime = System.currentTimeMillis(); ByteArrayInputStream stream = new ByteArrayInputStream(data); BufferedImage bufferedImage; bufferedImage = ImageIO.read(stream); int height = bufferedImage.getHeight(); int width = bufferedImage.getWidth(); long endTime = System.currentTimeMillis(); return "height="+height+" | width="+width+" | elapsed="+(endTime-startTime); } 它有效,但问题是它的速度慢得令人无法接受.对于100KB的图像,它需要6s.对于900KB的图像,它需要30秒.这是预期的吗?有没有办法让字节数组更快地进行bufferedImage转换? 仅供参考,抓住高度/宽度并不是我打算做的唯一事情.我最终想要处理bufferedImage.所以获得高度/宽度只是一个示例代码. 解决方法
我认为问题可能与ImageIO默认使用磁盘缓存(临时文件)这一事实有关,即使您的源是ByteArrayInputStream.因此,如果您的文件系统很慢,无论输入源如何,读取也会很慢.
您可以使用 如果您有更快的磁盘/ ramdisk或类似的存储临时文件,也可以使用 也就是说,即使对于磁盘缓存读取,您报告的读取时间似乎也不合理.如果问题仍然存在,我建议使用分析器找出花费的时间,并查看可能的优化. PS:我还有一个自定义 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java-3D绘制,设置透视点,设置视点!
- java – 使用特定模式将Instant格式化为String
- java – 为什么Gson Preconditions在这个实例中失败了?
- RMI初体验--第一次错处理java.rmi.UnmarshalException&
- Java中private、protected、public和default的区别
- java – 在自己的构造函数中使用对象
- java – 在Collection中查找重复的条目
- java – 精心设计的JMX MBean的特点是什么?
- java 使用POI 读写word 表格
- 如何在Heroku上解决javax.net.ssl.SSLHandshakeException?
推荐文章
站长推荐
- java – 为什么这个NumberFormatException?
- Java List.isEmpty()方法:判断集合对象是否为空
- java – 是否有一个工具可以来回替换传递的Excel
- 多线程 – 有没有greenDAO线程安全最佳实践?
- java开发工具必备神器——Notepad++和jd-gui下载
- Java Process.exitValue()中值的含义是什么?
- Java通用的Excel文件生成工具类,支持生成文件和
- 理解java中的有界泛型.有什么意义?
- java – 全局设置hibernate’default-cascade’属
- java.lang.IllegalStateException: Failed to lo
热点阅读