如何将BufferedImage转换为图像?

时间:2014-04-07 21:31:50

标签: java image bufferedimage

我正在尝试拆分一副卡片的图像并将单张卡片存储到图像中。

Image image;
BufferedImage deck = ImageIO.read( new URL( "http://www.jfitz.com/cards/classic-playing-cards.png" ) );
image = deck.getSubimage( x, y, width, height );

不兼容的类型:BufferedImage无法转换为Image

我看过的每个地方都说BufferedImage 一个Image,这个问题不应该存在。 (注意:如果它看起来像一个类赋值,它就是,但我们应该做的就是从预定的目录中加载一个图像。我试图通过使用URL来进一步使用它。 )

编辑04/09/2014
我一直在使用不同的导入,所以我想我真正想问的问题是如何将java.awt.image.BufferedImage转换为java.scene.image.Image。感谢你目前的帮助!

4 个答案:

答案 0 :(得分:2)

一旦我知道要问什么问题,Google就会很快回答这个问题。我找到了blog的快速解决方法。

BufferedImage tempCard = deck.getSubimage( x, y, width, height );
Image card = SwingFXUtils.toFXImage(tempCard, null );

尝试过并且效果很好!

答案 1 :(得分:0)

BufferedImage扩展了Image,这意味着你可以像这样声明一个BufferedImage:

Image myImage = ImageIO.read(new URL("my/url"));

这开始进入多态和继承。您的对象可能是BufferedImage,但BufferedImage仍然是一个Image,它可以作为一个。

一个更容易识别的例子可能是将ArrayList实例化为List

List<MyType> aList = new ArrayList<>();

这允许此ArrayList与所有类型的List对象兼容,就像BufferedImage一样。

查看API page for Image

它列出了这个抽象类的所有已知子类,包括BufferedImage。 (那里只有2个。)

答案 2 :(得分:0)

BufferedImageImage的子类。 您无需进行任何转换。

你可以分配如下:

Image image;
BufferedImage deck = ImageIO.read( new URL( "http://www.jfitz.com/cards/classic-playing-cards.png" ) );
image = deck;// That will do

答案 3 :(得分:-1)

Image image = new ImageIcon(bufferedImage).getImage();

这就是我通常做的方式...... OR

Image image = (Image) bufferedImage;