gpt4 book ai didi

java - 为什么 ImageIO.read() 与 Toolkit.getDefaultToolkit().getImage() 相比这么慢?

转载 作者:行者123 更新时间:2023-11-29 03:24:07 46 4
gpt4 key购买 nike

我正在使用 ImageIO.read() 从磁盘中获取一些 JPEG 文件,但它太慢了......读取每个文件需要 250 毫秒,而 Toolkit.getDefaultToolkit().getImage() 需要不到 10 毫秒(实际上它在我的测试中显示为 0ms)!

现在我问自己:如果 Toolkit.getDefaultToolkit().getImage() 这么快,为什么 ImageIO.read() 这么慢?


这非常快,但不会返回 BufferedImage:

Image image = Toolkit.getDefaultToolkit().getImage(f.getAbsolutePath());

这很慢(读取一个 2.3MB 的 3264x1840 JPEG 文件大约需要 250 毫秒):

BufferedImage image = ImageIO.read(f);

最佳答案

通常不是。

ImageIO 在调用它的同一线程上下文中读取图像,Toolkit.getDefaultToolkit().getImage() 使用单独的后台 Thread 加载图像并(几乎)立即返回。

这就是为什么你有 MediaTracker#waitForAllMediaTracker#waitForIDImageObserver。这一切都监视由 Toolkit.getDefaultToolkit().getImage() 创建的图像加载过程的状态,因此它们知道图像加载何时完成...

关于java - 为什么 ImageIO.read() 与 Toolkit.getDefaultToolkit().getImage() 相比这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21977106/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com