pgmファイルを読みたい。画像コンテンツをバイト配列に保持しました。ピクセルにアクセスすると、一部の値が負であることがわかります。そこで、「& 0xFF」を各バイトに適用しました。大丈夫だといいのですが、ファイルに書き込むと元の画像と同じではありません。
pgm p5ファイルを読み書きするにはどうすればよいですか?
int i = byteArray[index] & 0xFF; //reading
writer.write((char)(i)); //BufferedWriter
P5 形式はバイナリであることに注意してください。a を使用していてWriter
、値を にキャストしていますchar
。これはテキストには適していますが、バイナリ データには適していません。
代わりに、を使用して値をストリームに直接OutputStream
書き込みます。i
int i = byteArray[index] & 0xFF; // Reading
stream.write(i); // OutputStream
PS: PGM フォーマットを自分で実装したくない場合は、使用できるNetPBM フォーマット (PNM) 用の ImageIO プラグインを作成しました。オープン ソース (BSD ライセンス) です。