我测试使用两种方法在我的应用程序中加载超过2m大小的图片。
private void loadImages() {
long currentTime=System.currentTimeMillis();
MediaTracker mediaTracker = new MediaTracker(this);
images = new HashMap<String, Image>();
for (Iterator iterator = model.getAllImages().iterator(); iterator
.hasNext(); mediaTracker.addImage(tempImage, 0)) {
String filename = (String) iterator.next();
try{
tempImage=ImageIO.read(Game.class.getResourceAsStream(filename));
}catch(Exception e){
}
//URL imageURL = getClass().getResource(filename);
// tempImage = getImage(getCodeBase(), imageURL.toString());
images.put(filename, tempImage);
}
try {
mediaTracker.waitForID(0);
} catch (InterruptedException interruptedexception) {
}
System.err.println(System.currentTimeMillis()-currentTime);
}
我的测试结果显示ImageIO.read()
比getImage()
慢两倍。有人能解释一下为什么吗?等待您的回复。
最佳答案
我想说两个函数以两种不同的方式工作。
ImageIO
保证返回一个可以立即绘制的图像,而 getImage
将返回您对可能在某个时间加载的可能图像的引用将来,这就是您看到需要 ImageObserver
这可以解释 BufferedImage
和 Image
之间的大部分差异。 BufferedImage
允许您直接访问像素和颜色模型数据等内容
关于java - java加载图片函数的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599951/