使用PNGj将IntBuffer转换为Android中的图像文件

使用PNGj将IntBuffer转换为Android中的图像文件,android,bitmap,png,Android,Bitmap,Png,我在IntBuffer中有一个OpenGL缓冲区,它包含渲染图像的所有像素 IntBuffer ib = IntBuffer.allocate(mWidth * mHeight); mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGBA, GL_UNSIGNED_BYTE, ib); 我有超过5000x5000大小的图像,当我尝试分配其缓冲区并使用下面的代码将其保存为位图时,它抛出OutOfMemory错误。我已经试过了 mBitmap = Bitmap

我在IntBuffer中有一个OpenGL缓冲区,它包含渲染图像的所有像素

IntBuffer ib = IntBuffer.allocate(mWidth * mHeight);
mGL.glReadPixels(0, 0, mWidth, mHeight, GL_RGBA, GL_UNSIGNED_BYTE, ib);
我有超过5000x5000大小的图像,当我尝试分配其缓冲区并使用下面的代码将其保存为位图时,它抛出OutOfMemory错误。我已经试过了

mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(IntBuffer.wrap(iat));
我想分块做这个过程。经过太多的研究,我发现PNGj图书馆做了我想要的

但我无法找到任何帮助,将IntBuffer转换为图像数据并将其存储在PNGj中的文件中

任何帮助都将不胜感激

是一个低级编码库,它以原始格式写入和读取图像行。有关格式的说明,请参见。 在ARGB 8位的情况下,您只需要分配一个宽度为x 4的字节或整数数组,然后从IntBuffer复制这些值。在页面中有一个使用BuffereImage类型_INT_ARGB的示例,非常类似于您的场景