Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字节数组到某种Java/Scala映像。性能注意事项_Java_Image_Scala - Fatal编程技术网

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

字节数组到某种Java/Scala映像。性能注意事项,java,image,scala,Java,Image,Scala,我正在编写一个FTP服务器,它接收图像,然后调整大小并上传它们 我当前的流程(伪代码)如下所示: val imagesAsBytes: Array[Byte] = ... val bufferedImage: BufferedImage = ImageIO.read(new ByteArrayInputStream(bytes)) uploadImage(bufferedImage) 这就是要点。我忽略了调整大小,因为它不重要。基本上,我使用ImageIO模块将Array[Byte]序列化为B

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

我当前的流程(伪代码)如下所示:

val imagesAsBytes: Array[Byte] = ...
val bufferedImage: BufferedImage = ImageIO.read(new ByteArrayInputStream(bytes))
uploadImage(bufferedImage)
这就是要点。我忽略了调整大小,因为它不重要。基本上,我使用
ImageIO
模块将
Array[Byte]
序列化为
BufferedImage
,然后调整其大小

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

如果我只上传
数组[Byte]
,我可以获得大约4倍的吞吐量,而不是我实际尝试将其转换为
缓冲图像。我不能只上传
数组[Byte]
,原因是我确实需要调整图像的大小。我没有绑定到
BufferedImage
,这只是我的第一次尝试

有人知道我可以用什么方法来加速吗?是否有一种更好的格式我应该在
buffereImage
上使用

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


编辑:我已经回顾了这个问题,并且意识到了这一点:
ImageIO.setUseCache(false)

我建议查看更受积极支持的库(最新版本4.0,2020年2月)如下。在引擎盖下,它使用
java.awt.*
。至少在出现任何问题的情况下,您将能够解决这些问题并得到解决,而且还可以使用更具“伸缩性”的API


希望有帮助。

使用ImageMagic的外部程序。

这有帮助吗?根据你的数字,我不认为解码一幅图像,重新采样(调整大小),最后再次编码是缓慢的(4倍)。事实上,与只复制字节相比,它的速度惊人地快。。。还是仅仅与解码相比?不管怎样,您使用的是什么文件格式?有些格式比其他格式更难进行en-/解码。