2012-07-05 112 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充满鳗鱼!