修改 ByteBuffer 中的图像数据
Modify image data in ByteBuffer
我想修改已加载为 ByteBuffer
的 PNG 图像的每像素 RGB 颜色数据,最好是简单、轻量级的解决方案。
我目前使用 ReadableByteChannel
将数据从文件直接加载到 ByteBuffer
, 不 解码 PNG 数据。
所以问题是,我如何
- 将
ByteBuffer
PNG 数据解码为我可以修改像素数据的内容
- 将其转回有效的
ByteBuffer
('valid' 表示它将被 OpenGl 着色器接受)
PNG 图像编码包括(除其他外)ZLIB 压缩,您不能直接访问像素值。您需要(实际上)解码图像,例如将其读入 BufferedImage
和 ImageIO.read( )
如果出于某种原因(巨大的图像,内存限制)你不想在 BufferedImage
中加载内存中的完整图像,你可以使用渐进式 reader(例如 PNGJ)
我想修改已加载为 ByteBuffer
的 PNG 图像的每像素 RGB 颜色数据,最好是简单、轻量级的解决方案。
我目前使用 ReadableByteChannel
将数据从文件直接加载到 ByteBuffer
, 不 解码 PNG 数据。
所以问题是,我如何
- 将
ByteBuffer
PNG 数据解码为我可以修改像素数据的内容 - 将其转回有效的
ByteBuffer
('valid' 表示它将被 OpenGl 着色器接受)
PNG 图像编码包括(除其他外)ZLIB 压缩,您不能直接访问像素值。您需要(实际上)解码图像,例如将其读入 BufferedImage
和 ImageIO.read( )
如果出于某种原因(巨大的图像,内存限制)你不想在 BufferedImage
中加载内存中的完整图像,你可以使用渐进式 reader(例如 PNGJ)