我使用ImageIO.read()来从磁盘获取一些JPEG文件,但它是如此之慢...它需要250毫秒读取每个文件,而Toolkit.getDefaultToolkit()的getImage()只需要不到10毫秒(实际它在我的测试中显示0ms)!与Toolkit.getDefaultToolkit()。getImage()相比,ImageIO.read()为什么这么慢?
现在,我问自己:为什么是ImageIO.read()如此缓慢,如果Toolkit.getDefaultToolkit()的getImage()是如此之快?
这是超级快,但不会返回一个BufferedImage:
Image image = Toolkit.getDefaultToolkit().getImage(f.getAbsolutePath());
这是缓慢的(〜250毫秒读取2.3MB 3264x1840 JPEG文件):
BufferedImage image = ImageIO.read(f);
嗯......你确定吗?如果是的话,我怎么能用ImageIO.read()来做同样的事情? – ceklock
将'ImageIO.read'包装到一个单独的线程中。这将意味着,直到'ImageIO.read',你将不会有任何图像数据... – MadProgrammer
是的,你是对的。如果我在调用getImage()之后尝试检查其大小,图像并未完全加载。 – ceklock