0
我測試使用兩種方法在我的應用程序中加載超過2米大小的圖片。有關在Java中加載圖片的函數的速度
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()
.Could有人能解釋我爲什麼?等待你的回覆。
謝謝你的答覆。我可以理解你的答案最多。但是「因此繪畫方法需要ImageObserver」的意思是什麼? – user1456170
看看像Graphics2D.drawImage。最後一個參數是一個ImageObserver(它很幸運地被大多數UI組件所實現)。當圖像數據可用於繪製時,這用於告訴圖形引擎。你必須記住,最初的前提是Imges將被加載網絡(慢調制解調器),所以他們需要跟蹤進度,以免減慢繪製週期。 ImageIO是在JDK 1.4中引入的,旨在提供更「直接」的加載機制 – MadProgrammer
因此,如果加載大圖像數據,ImageIO是否比其他更好? – user1456170