我有一个 Pixmap(libGDX 类),想将其转换为 BufferedImage。 这可能吗?如果可以的话该怎么做?
似乎只有一种方法可以做到这一点,但我不知道如何做。有什么提示吗?
pixmap.getPixels()
不是最有效的,但如果您不关心在内部缓冲区中将数据编码为 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()));
}
}
你可以试试
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