如何将 libGDX 的纹理转换为字节数组并在 Java 中再次转换回来

How to convert libGDX's Texture to byte array and back again in Java

所以我正在使用 libgdx 和 java 开发一款小型多人游戏。我正在使用数据报套接字和数据报包在客户端之间发送消息。为了发送数据,我需要将其转换为字节数组。我一直在寻找一种将 libgdx 纹理转换为字节数组的方法,但找不到解决方案。我无法使 class 实现可序列化,因为我无权访问 class。

如果能帮助解决我的问题,我将不胜感激。提前致谢!

您可以使用 中的以下代码片段将 Texture 转换为像素图:

Texture texture = textureRegion.getTexture();
if (!texture.getTextureData().isPrepared()) {
    texture.getTextureData().prepare();
}
Pixmap pixmap = texture.getTextureData().consumePixmap();

获得 Pixmap 后,您可以调用 getPixels() 方法,该方法将 return 包含像素数据的字节数组 ByteBuffer。您可以通过调用 ByteBuffer 上的 get(byte[]) 方法将原始数据读入 byte[]:

ByteBuffer byteBuffer = pixmap.getPixels();
byte[] pixelDataByteArray = new byte[byteBuffer.remaining()];
byteBuffer.get(pixelDataByteArray);

要将 byte[] 转换回 Texture,您可以像这样使用 PixmapTexture 的构造函数:

Texture fromByteArray = new Texture(new Pixmap(pixelDataByteArray, 0, pixelDataByteArray.length));