字节数组到某种Java / Scala图像。性能注意事项

时间:2015-07-23 00:47:03

标签: java image scala

我正在编写一个接收图像的FTP服务器,然后调整大小并上传它们。

我当前的过程(伪代码)如下:

val imagesAsBytes: Array[Byte] = ...
val bufferedImage: BufferedImage = ImageIO.read(new ByteArrayInputStream(bytes))
uploadImage(bufferedImage)

这就是它的要点。我遗漏了调整大小,因为它并不重要。基本上,我使用Array[Byte]模块将BufferedImage序列化为ImageIO,然后调整其大小。

我做了一些分析,我注意到使用BufferedImage创建ImageIO的速度非常慢。

如果我只上传Array[Byte],我的吞吐量可以达到4倍,而不是实际尝试将其转换为BufferedImage。我无法上传Array[Byte]的原因是我需要调整图片大小。我与BufferedImage无关,这只是我的第一次尝试。

有谁知道我可以用来加速这个的一些想法?我应该使用BufferedImage更好的格式吗?

我已经考虑过将大小调整到一个单独的微服务并异步执行,但它不是第一个版本的选项。

修改:我已审核了this个问题,并且知道这一点:ImageIO.setUseCache(false)

2 个答案:

答案 0 :(得分:0)

我建议查看更积极支持的图书馆(2016年5月的最新版本),例如scrimage。在引擎盖下它使用java.awt.*。至少在遇到任何问题的情况下,您将能够解决这些问题并解决问题,而且使用更多“scalish”API。

希望它有所帮助。

答案 1 :(得分:0)

使用ImageMagic的外部程序。