如何在 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 许可证)。
我想读取 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 许可证)。