修改 ByteBuffer 中的图像数据

Modify image data in ByteBuffer

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

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

所以问题是,我如何

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

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

如果出于某种原因(巨大的图像,内存限制)你不想在 BufferedImage 中加载内存中的完整图像,你可以使用渐进式 reader(例如 PNGJ)