为什么ImageIO.read()SOOO慢?

时间:2016-11-07 15:12:07

标签: java inputstream javax.imageio

所以我试图从流中获取PNG图像。

image = ImageIO.read(inputStream);

这段代码运行了十秒钟!我认为问题出在缓慢的InputStream中,所以我试着先把它加载到缓冲区中。

byte[] bytes = inputStreamToBytes(inputStream);
image = ImageIO.read(new ByteArrayInputStream(bytes));

猜猜是什么!将它从InputStream加载到缓冲区需要大约100ms,但是很多时候只需要从字节数组中读取它!读十(TEN)秒!来自RAM!

我在Raspberry PI上做这件事。是的,我知道它是一个玩具,而不是一台真正的电脑。所以我试着在我的MacBook Air上做到这一点。真的,两秒钟比十点好。但对于一些800x600的PNG来说仍然很多。那么为什么呢?怎么办?

1 个答案:

答案 0 :(得分:1)

您可能需要安装默认情况下未安装的Java Native IO库。

http://www.oracle.com/technetwork/java/install-jai-imageio-1-0-01-139659.html

如果您没有安装此lib,则图像上的所有操作都是在java中执行的,而不是本机的。