我想阅读pgm文件。我将图像内容保存在字节数组中。当我访问像素时,我看到一些值是负数。所以,我在每个字节都应用了“& 0xFF”。我希望它没问题,但是当我写入文件时,它与原始图像不同。
我如何读写pgm p5文件?
int i = byteArray[index] & 0xFF; //reading
writer.write((char)(i)); //BufferedWriter
答案 0 :(得分:1)
请记住,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许可证)。