IntBuffer使用PNGj在Android中映像文件

时间:2015-05-27 19:52:38

标签: 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错误。我试过大了H

mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(IntBuffer.wrap(iat));

我想以大块的方式完成这个过程。经过太多的研究,我发现PNGj库做了我想要的。

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

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

PNGJ是一个低级编码库,它以原始格式写入和读取图像行。格式在docs中说明。 对于ARGB(8位),您只需要分配宽度为x 4的字节数组(或整数),并复制IntBuffer中的值。在Snippets页面中有一个使用BufferedImageTYPE_INT_ARGB)的示例,与您的方案非常相似。