gpt4 book ai didi

java - 在 Java 中延迟加载图像

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:03 25 4
gpt4 key购买 nike

让我们考虑一下这段代码

Image img=Toolkit.getDefaultToolkit().getImage("1.png");
g.drawImage(img,0,0,null);

代码所做的是加载图像 1.png 并将其绘制在图形上下文中。现在我观察到 drawImage 第一次调用时不绘制任何图像。相反,它会在进一步调用时绘制图像。现在我认为这种行为是由于异步图像加载或方法的惰性行为造成的。

要更正此问题,我可以像这样使用 javax.swing.ImageIcon 类。

Image img=new ImageIcon("1.png").getImage();
g.drawImage(img,0,0,null);

我想知道执行相同任务的其他更好方法是什么。

最佳答案

视情况而定。

如果您通过“慢速”连接(例如互联网)加载图像,或者您正在加载相当大的图像,最好使用延迟加载方法。

这允许应用程序在图像开始加载时继续运行。

Andrew 是正确的,您应该使用 g.drawImage(img,0,0,this),因为这允许组件在图像完成加载后自动更新自身,而无需您执行任何其他操作。

如果您的应用程序的某些部分操作依赖于图像,或者您正在本地加载小图像,那么使用诸如...之类的东西就足够了

BufferedImage image = ImageIO.read(imageResource); 
// Where image resource is either a file or local URL (such as an embedded resource)

我个人倾向于在大多数情况下使用后台线程加载我的图像并使用 ImageIO。在我的 paint 方法中,如果需要让用户知道我正在加载图像,我可能会使用一个小的占位符图像。

您还需要考虑要加载的图像类型。虽然 ImageIO 对图像格式有更大的支持,但加载动画 GIF 是有问题的,需要您做更多的工作才能实现。

ps - 不要在你的组件 paint 方法中加载图像 - paint 可以被调用多次并且加载图像(或其他资源)会显着减慢重绘过程,使你的应用程序延迟.. .

关于java - 在 Java 中延迟加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134227/

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