如何从libGDX中的Pixmap获取BufferedImage?

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

我有一个 Pixmap(libGDX 类),想将其转换为 BufferedImage。 这可能吗?如果可以的话该怎么做?

似乎只有一种方法可以做到这一点,但我不知道如何做。有什么提示吗?

pixmap.getPixels()
bitmap libgdx bufferedimage pixmap
2个回答
0
投票

不是最有效的,但如果您不关心在内部缓冲区中将数据编码为 PNG 浪费资源,您可以这样做:

public static BufferedImage toBufferedImage(Pixmap pixmap) throws IOException {
    try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) {

        PixmapIO.PNG writer = new PixmapIO.PNG(pixmap.getWidth() * pixmap.getHeight() * 4);
        try {
            writer.setFlipY(false);
            writer.setCompression(Deflater.NO_COMPRESSION);
            writer.write(baos, pixmap);
        } finally {
            writer.dispose();
        }

        return ImageIO.read(new ByteArrayInputStream(baos.toByteArray()));
    }
}

-2
投票

你可以试试

new ImageIcon(pixmap.getPixels().array()).getImage();

您可能需要注意的一件事是Pixmap.Format。我相信这可能会改变创建的字节数组。

老实说,我不确定上面的代码是否有效,但我希望它能为您指明正确的方向。

参考文献:

http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/CreatingaBufferedImagefromanImageobject.htm

https://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html

© www.soinside.com 2019 - 2024. All rights reserved.