如何在 java 中写入和读取 pgm p5 文件

how to write and read pgm p5 file in java

我想读取 pgm 文件。我将图像内容保存在字节数组中。当我访问像素时,我看到一些值为负数。所以,我在每个字节上应用了“& 0xFF”。我希望它没问题,但是当我写入文件时,它与原始图像不同。

如何读写pgm p5文件?

int i = byteArray[index] & 0xFF; //reading
writer.write((char)(i)); //BufferedWriter    

请记住,P5 格式是二进制。您正在使用 Writer 并将值转换为 char。这适用于文本,但不适用于二进制数据。

相反,使用 OutputStream 并将 i 中的值直接写入流。

int i = byteArray[index] & 0xFF; // Reading
stream.write(i); // OutputStream 

PS:如果您不想自己实现 PGM 格式,我已经创建了一个您可以使用的 ImageIO plugin for the NetPBM formats (PNM)。它是开源的(BSD 许可证)。