我正在编写一个FTP服务器,用于接收图片并将其调整大小后上传。
我的当前流程(伪代码)如下:
val imagesAsBytes: Array[Byte] = ...
val bufferedImage: BufferedImage = ImageIO.read(new ByteArrayInputStream(bytes))
uploadImage(bufferedImage)
这就是要点。我没有涉及调整大小,因为它不重要。基本上,我使用
ImageIO
模块将Array[Byte]
串行化为BufferedImage
,然后调整大小。我已经进行了一些分析,发现使用
ImageIO
创建BufferedImage
非常慢。如果我只上传
Array[Byte]
,我可以实现大约4倍的吞吐量,而不是实际尝试将其转换为BufferedImage
。我不能只上传Array[Byte]
的原因是我需要调整图片的大小。我并不局限于BufferedImage
,这只是我的第一个尝试。有人知道我可以使用哪些想法来加速这个过程吗?是否有更好的格式应该优于
BufferedImage
?我已经考虑将调整大小推迟到单独的微服务中,并进行异步处理,但这不是第一次发布的选择。
编辑:我已经审查了此问题,并知道这一点:
ImageIO.setUseCache(false)