如何在Java中将图像转换为BuffereImage?

如何在Java中将图像转换为BuffereImage?,java,image,swing,awt,Java,Image,Swing,Awt,如何在Java中转换为 请注意,这显然是不正确的,因为它使用方法和,如果尚未加载映像,则可以返回-1(image根据定义是一个异步对象) 请提供更多正确的答案,或者提供更多现有答案已经正确的证据。如果这对您很重要,您可以使用MediaTracker来“等待”图像加载,那么您不需要关心提供ImageObserver try { MediaTracker mt = new MediaTracker(new JPanel()); Image image = Toolkit.getDef

如何在Java中转换为

请注意,这显然是不正确的,因为它使用方法和,如果尚未加载映像,则可以返回
-1
image
根据定义是一个异步对象)


请提供更多正确的答案,或者提供更多现有答案已经正确的证据。

如果这对您很重要,您可以使用
MediaTracker
来“等待”图像加载,那么您不需要关心提供
ImageObserver

try {
    MediaTracker mt = new MediaTracker(new JPanel());
    Image image = Toolkit.getDefaultToolkit().createImage("...");
    mt.addImage(image, 0);
    System.out.println("Wait for...");
    mt.waitForAll();
    System.out.println("I be loaded");

    BufferedImage bi = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = bi.createGraphics();
    g2d.drawImage(image, 0, 0, null);
    g2d.dispose();
} catch (InterruptedException ex) {
    ex.printStackTrace();
}
请查看以了解更多详细信息

我不想添加任何GUI,我只需要下载图像,否则会失败


好的,如果您“需要下载”图像,那么您可以使用
ImageIO.read(URL)
,查看更多详细信息。。。这样您就不需要关心
图像
MediaTracker
,因为
ImageIO
返回一个
BuffereImage

,您需要创建一个空的BuffereImage来将像素复制到其中。因此,您需要原始图像的尺寸。在加载之前,我无法知道原始图像的尺寸。哦,天哪,我尝试将两个图像转换为BuffereImage,但我真的快要发火了,因为我不明白为什么一个会转换,另一个不会:)我以前必须作为setIcon和在更改之前,将我的JButton设置为rollovericon,这样做的技巧非常感谢:)在
MediaTracker
的构造函数中
组件的用途是什么?我不想添加任何GUI,我只需要下载图像或失败
组件
正在充当
MediaTracker
ImageObserver
。好的,如果您“需要下载”图像,那么您可以使用
ImageIO.read(URL)
,查看更多详细信息。。。然后你就不需要关心
Image
MediaTracker
,因为
ImageIO
返回一个
buffereImage
我没有URL,我在
Image
实例表单中有一个图像,然后你需要
MediaTracker
,创建
组件不会“启动”任何UI,它只是用来简化
ImageObserver
API要求