2012-07-05 48 views
0

我正在嘗試調整我從網上下載並將其放入JPanel的圖片。 首先,我使用下面的代碼從網站上下載圖片:嘗試調整圖像大小後出現黑屏

public static Image MSImageHigh(){ 
    URL imageUrl = null; 
    try { 
     imageUrl = new URL("http://www.hmdb.ca/labm/metabolites/" 
     + HMDB + "/ms/spectraH/" + HMDB + "H.png"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 

    Image image = Toolkit.getDefaultToolkit().createImage(imageUrl); 
    return image; 
} 

然後我做了調整圖像大小的新方法:

public static BufferedImage resizeImage() { 
    final BufferedImage bufferedImage = new BufferedImage(300, 500,BufferedImage.TYPE_INT_RGB); 
    final Graphics2D graphics2D = bufferedImage.createGraphics(); 

    graphics2D.setComposite(AlphaComposite.Src); 
    graphics2D.drawImage(MSImageHigh(), 0, 0, 200, 200, null); 
    graphics2D.dispose(); 

    return bufferedImage; 
} 

這將產生SA的新形象,是調整爲200x200像素。它實際上做的是給我一個200x200px的黑屏。順便說一句,我也嘗試使用TYPE_INT_ARGB而不是TYPE_INT_RGB,這會產生一個完全透明的圖像,所以這也不起作用。

+1

有可能您的圖片尚未完成加載。這可以解釋爲什麼沒有畫畫。你可以使用mediatracker來解決這個問題 – ControlAltDel 2012-07-05 17:43:04

+1

如果你使用'ImageIO.read(imageUrl)'而不是'Toolkit.getDefaultToolkit()。createImage(imageUrl);'? – 2012-07-05 18:13:09

+0

@ControlAltDel更好的是,使用'ImageIO.read(URL)'作爲阻塞方法。 – 2012-07-05 18:13:14

回答

0

我用ImageIO.read(imageUrl)而不是Toolkit.getDefaultToolkit().createImage(imageUrl)並解決了這個問題。謝謝@Hovercraft充滿鰻魚!