我正在编写一个接收图像的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)
答案 0 :(得分:0)
我建议查看更积极支持的图书馆(2016年5月的最新版本),例如scrimage。在引擎盖下它使用java.awt.*
。至少在遇到任何问题的情况下,您将能够解决这些问题并解决问题,而且使用更多“scalish”API。
希望它有所帮助。
答案 1 :(得分:0)
使用ImageMagic的外部程序。