Преобразование из pgm в pbm, но получение неправильного вывода
Я написал программу, которая берет изображение PGM в качестве входных данных и преобразует его в файл PBM. Однако изображение, которое я получаю в качестве вывода, неверно.
Я определяю, является ли пиксель белым, если его значение больше, чем (max+1)/2, затем использую putchar(), чтобы поместить символ со значением 0, а если он черный, то 1(также пробовал max вместо 1 и 255). Однако на выходе я получаю кучу вертикальных линий. Я запускаю это в терминале Linux с помощью команды:
./prog < image1.pgm > image2.pbm
Это функция, которую я использую для чтения и преобразования изображения (где size — это высота и ширина, а max — это максимальное значение каждого пикселя):
void p5_to_p4(int size, int max){
int g1,g2,g3;
int i;
for(i=0; i<size; i++){
g1=getchar();
g2=getchar();
g3=getchar();
if (g1>((max+1)/2)){
putchar(0);
putchar(0);
putchar(0);
}
else {
putchar(max);
putchar(max);
putchar(max);
}
}
}
это выходное изображение, которое я получаю (в формате jpeg): вывод , когда это то, что я должен получить правильный вывод