如何将BufferedImage转换为图像?

问题描述 投票:0回答:4

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

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。感谢你目前的帮助!

java image bufferedimage
4个回答
2
投票

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

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

试了一下,效果很好!


0
投票

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

您可以分配如下:

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

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个。)


-1
投票
Image image = new ImageIcon(bufferedImage).getImage();

这就是我通常这样做的方式......或者

Image image = (Image) bufferedImage;
© www.soinside.com 2019 - 2024. All rights reserved.