【问题标题】:IntBuffer to image file in Android using PNGj使用 PNGj 在 Android 中将 IntBuffer 转换为图像文件
【发布时间】:2015-08-10 02:20:25
【问题描述】:

我在 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 文件中的任何帮助。

任何帮助将不胜感激!

【问题讨论】:

    标签: android bitmap png


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2023-03-07
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多