Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Libgdx纹理中提取字节[]_Android_Libgdx - Fatal编程技术网

Android 从Libgdx纹理中提取字节[]

Android 从Libgdx纹理中提取字节[],android,libgdx,Android,Libgdx,我想上传一个内部png图像到我的后端,后端提供的API只允许上传byte[]数据 但到目前为止,我还没有找到从纹理中提取字节[]数据的方法。是否是内部资源,我不确定是否重要 那么,使用Libgdx框架有哪些方法可以实现这一点呢? 我要使用的映像已加载AssetManager。在尝试执行此操作之前,请确保了解以下内容: 纹理是驻留在视频内存(VRAM)中的OpenGL资源。纹理数据本身(不一定)在RAM中可用。所以你不能直接访问它。将数据从VRAM传输到RAM相当于截图。一般来说,这是你想要避免的

我想上传一个内部png图像到我的后端,后端提供的API只允许上传byte[]数据

但到目前为止,我还没有找到从纹理中提取字节[]数据的方法。是否是内部资源,我不确定是否重要

那么,使用Libgdx框架有哪些方法可以实现这一点呢?
我要使用的映像已加载AssetManager。

在尝试执行此操作之前,请确保了解以下内容:

纹理是驻留在视频内存(VRAM)中的OpenGL资源。纹理数据本身(不一定)在RAM中可用。所以你不能直接访问它。将数据从VRAM传输到RAM相当于截图。一般来说,这是你想要避免的事情

但是,如果您使用
AssetManager
加载映像,则您是从文件加载映像,因此RAM中已有可用数据。在这种情况下,它不是称为
纹理
,而是称为
Pixmap
。要从pixmap获取数据,如下所示:

Pixmap pixmap = new Pixmap(Gdx.files.internal(filename));
ByteBuffer nativeData = pixmap.getPixels();
byte[] managedData = new byte[nativeData.remaining()];
nativeData.get(managedData);
pixmap.dispose();

请注意,您也可以使用
AssetManager
加载
Pixmap
(在这种情况下,您将
卸载
,而不是
处置它)。
nativeData
包含原始内存,大多数API也可以使用它,因此请检查是否可以直接使用它。否则,您可以使用
managedData
managedbyte数组。

为什么不使用GWT项目编译它??