Как домашнее задание, мы должны читать в .pgm-файле, а затем рисовать квадрат, изменяя значения пикселей, а затем выводить новое изображение. После того как я перейду и изменим пиксели, я распечатаю их все на .txt, чтобы проверить, что они действительно добавлены. У меня возникла проблема с записью нового файла. Я знаю, что он должен быть двоичным, поэтому после googling я думаю, что должен использовать DataOutputStream, но я мог ошибаться. После того, как я напишу файл, его размер составляет 1,9 МБ, где, поскольку оригинал составляет всего 480 КБ, так что сразу с места в карьер я подозреваю, что что-то должно быть неправильным. Любые советы или советы для написания файлов .pgm были бы замечательными!Чтение и запись файла 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();
}
При попытке открыть новый файл я получаю сообщение об ошибке: «незаконный формат изображения», а исходный файл открывается должным образом.
Вы прочитали [Учебник Java по потокам байтов] (http://docs.oracle.com/javase/tutorial/essential/io/bytestreams.html)? –
@Obicere «мы должны читать в файле .pgm». Вопрос в том, является ли исходный файл двоичным или ASCII. –
@Obicere Исходный файл .pgm file – John