如何在Java中将Image转换为BufferedImage?
如何在Java中转换Image
为BufferedImage
?
请注意,现有答案显然是不正确的,因为它使用方法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();
}
看看MediaTracker
JavaDocs了解更多详细信息
我不想添加任何GUI,我只需要下载图像或失败
好吧,如果您“需要下载”该图像,则可以使用ImageIO.read(URL)
,请参阅阅读/加载图像以获取更多详细信息…然后,您无需关心Image
或MediaTracker
,因为ImageIO
返回的是BufferedImage
以上是 如何在Java中将Image转换为BufferedImage? 的全部内容, 来源链接: utcz.com/qa/428031.html