如何将Image转换为BufferedImage

时间:2014-05-31 23:30:28

标签: java image graphics

现在我有一个图像,我想将其转换为BufferedImage ...

这是我的代码 -

private BufferedImage toBufferedImage(Image img, int width, int height){
    // Create a buffered image with transparency
    BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

    // Draw the image on to the buffered image
    Graphics bGr = bimage.getGraphics();
    bGr.drawImage(img, 0, 0, null);
    bGr.dispose();

    // Return the buffered image
    return bimage;
}

但它不起作用。有人可以解释什么是错的吗?

2 个答案:

答案 0 :(得分:0)

BufferedImage扩展了Image,所以你可以投射它:

BufferedImage buffered = (BufferedImage) image;

但是你必须在运行时检查图像对象的类型,因为它可以包含其他类型的图像。

<强>更新

要将Image转换为BufferedImage,您应该检查此类并尝试:

http://www.dzone.com/snippets/converting-images

答案 1 :(得分:0)

尝试使用包含JavaFX的新JRE。

您可以使用SwingFXUtils。有一种方法可以满足您的要求:

BufferedImage image = SwingFXUtils.fromFXImage(fxImage, null);

BufferedImage image = ImageIO.read(new File(filename));