0

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

我如何读写 pgm p5 文件?

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

1 回答 1

1

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

相反,使用 anOutputStream并将值i直接写入流。

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

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

于 2015-07-08T10:58:17.110 回答