好吧,我正在讀取名爲'images'的.jar文件的子目錄中的圖像,當然,我必須通過流訪問它們,因爲它位於.jar中。這是讀取圖片:我在閱讀圖片時遇到OutOfMemory錯誤
private Image wPawn = getImage(getClass().getResourceAsStream("images/WhitePawn.png")),
bPawn = getImage(getClass().getResourceAsStream("images/BlackPawn.png")),
wRook = getImage(getClass().getResourceAsStream("images/WhiteRook.png")),
bRook = getImage(getClass().getResourceAsStream("images/BlackRook.png")),
wKnight = getImage(getClass().getResourceAsStream("images/WhiteKnight.png")),
bKnight = getImage(getClass().getResourceAsStream("images/BlackKnight.png")),
wBishop = getImage(getClass().getResourceAsStream("images/WhiteBishop.png")),
bBishop = getImage(getClass().getResourceAsStream("images/BlackBishop.png")),
wQueen = getImage(getClass().getResourceAsStream("images/WhiteQueen.png")),
bQueen = getImage(getClass().getResourceAsStream("images/BlackQueen.png")),
wKing = getImage(getClass().getResourceAsStream("images/WhiteKing.png")),
bKing = getImage(getClass().getResourceAsStream("images/BlackKing.png"));
private Image getImage(InputStream stream){
Image i;
try{
i = ImageIO.read(stream);
stream.close();
} catch (IOException e) {
i = null;
}
return i;
}
此代碼的工作,但在運行棋局簡直是可怕的落後與我的鼠標輸入。之前,我有一個獨立的小課程完成了相同的工作,但它沒有導致OutOfMemoryError。
錯誤來自i = ImageIO.read(stream);
的行,它從圖像聲明中調用。任何人都可以幫助找出最好的方法來糾正錯誤?
圖像有多大? –
@Cameron問題不在於文件大小,正如我之前提到的那些與獨立類一起工作的文件。我的PNG是150x150具有透明背景的2色PNG。 –
診斷OutOfMemoryErrors總是很難,因此您需要獲取所有信息。儘早排除圖像的大小很重要,所以我就問這個問題。 –