宿題として、.pgm ファイルを読み込み、ピクセル値を変更して正方形を描画し、新しい画像を出力することになっています。ピクセルを調べて変更した後、実際に追加されたことを確認する方法として、ピクセルをすべて .txt に出力します。私が問題を抱えているのは、新しいファイルの書き込みです。バイナリであることがわかっているので、グーグルで検索した後、DataOutputStreamを使用する必要があると思いますが、間違っている可能性があります。ファイルを書き込んだ後、そのサイズは 1.9MB ですが、元のファイルは 480KB しかないので、すぐに何か問題があるのではないかと思います。.pgm ファイルへの書き込みに関するアドバイスやヒントをいただければ幸いです。
public static void writeImage(String fileName) throws IOException{
DataOutputStream writeFile = new DataOutputStream(new FileOutputStream(fileName));
// Write the .pgm header (P5, 800 600, 250)
writeFile.writeUTF(type + "\n");
writeFile.writeUTF(width + " " + height + "\n");
writeFile.writeUTF(max + "\n");
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
writeFile.writeByte(img[i][j]); //Write the number
writeFile.writeUTF(" "); //Add white space
}
writeFile.writeUTF(" \n"); //finished one line so drop to next
}
writeFile.close();
}
新しいファイルを開こうとすると、「不正な画像形式」というエラー メッセージが表示され、元のファイルは正しく開きます。