【问题标题】:Modify image data in ByteBuffer修改 ByteBuffer 中的图像数据
【发布时间】:2018-03-11 18:44:35
【问题描述】:

我想修改已加载为ByteBuffer 的 PNG 图像的每像素 RGB 颜色数据,最好是一个简单、轻量级的解决方案。

我目前使用ReadableByteChannel 将数据直接从文件加载到ByteBuffer,它解码PNG数据。

那么问题来了,我该怎么做

  1. ByteBuffer PNG 数据解码为我可以修改像素数据的内容
  2. 将其转回有效的ByteBuffer(“有效”表示它将被 OpenGL 着色器接受)

【问题讨论】:

  • 在将 png 传递给 OpenGL 之前,您必须以任何方式对其进行解码。
  • @BDL 很公平,我想我需要 NanoVG 能够理解的格式。
  • 你为什么首先将编码的 png blob 读取到字节缓冲区?
  • @derhass 我认为这是我应该做的?有没有更好的方法来做到这一点?
  • 使用一些真正理解您想要使用的文件格式的图像加载器

标签: java opengl png bytebuffer


【解决方案1】:

PNG 图像编码包括(除其他外)ZLIB 压缩,您不能直接访问像素值。您需要(实际上)解码图像,例如将其读入BufferedImageImageIO.read( )

如果出于某种原因(巨大的图像、内存限制)您不喜欢将完整图像加载到内存中的 BufferedImage 中,您可以使用渐进式阅读器(例如 PNGJ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多