如何在Java中将Image转换为BufferedImage?

如何在Java中转换ImageBufferedImage

请注意,现有答案显然是不正确的,因为它使用方法getWidth(null)getHeight(null)-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();

}

看看MediaTrackerJavaDocs了解更多详细信息

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

好吧,如果您“需要下载”该图像,则可以使用ImageIO.read(URL),请参阅阅读/加载图像以获取更多详细信息…然后,您无需关心ImageMediaTracker,因为ImageIO返回的是BufferedImage

以上是 如何在Java中将Image转换为BufferedImage? 的全部内容, 来源链接: utcz.com/qa/428031.html

回到顶部