Я пытаюсь прочитать данные пикселя из файла PPM. У меня есть функция для чтения заголовка, поэтому я знаю, что это указывает на начало данных пикселя. Я попытался использовать fgetc (файл), но если значение больше одной цифры, это не сработает. Я также попытался использовать массив и преобразовать массив в int или char, но у меня нет способа узнать, сколько цифр каждого значения. Я также не уверен, что значения разделены пробелом или нет. В основном мне нужен способ извлечь данные пикселя. (Я использую С)Чтение пиксельных данных в файле PPM с использованием C
Мой код прямо сейчас:
char read_byte(FILE *ipt) {
int c, i=0, sum=0;
while (i<16) {
c=fgetc(ipt);
if((i%2)!=0 {
if(c&1) {
sum+=pow(2,i/2);
}
}
i++;
}
return (char)sum;
}
EDIT: Сначала я думал, что файл был сохранен в качестве значений ASCII, то я понял, что хранится в двоичном виде. Прямо сейчас, я думаю, что я делаю это как шестнадцатеричный. Я не уверен, что это правильно. Я действительно застрял.
EDIT: изменил мой код немного
char read_byte(FILE *ipt) {
int c, i=0, sum=0;
while(i<8) {
c = fgetc(ipt);
c=c&1;
sum+=c*pow(2,i);
i++;
}
return sum;
}
I напечатать сумму в качестве% с
Этот ответ может направить вас в правильном направлении: http://stackoverflow.com/questions/2693631/read-ppm-file-and-store-it -in-a-array-coded-with-c –
Покажите нам, что вы пробовали. – Bart
Нам нужно больше кода. Правильно ли программа считывает все первые 8 частей файла, как описано в http://netpbm.sourceforge.net/doc/ppm.html, если она есть, то она имеет размер, ширину и высоту изображения данных и maxvalue, что дает количество байтов (1 или 2) каждого цветового компонента. – gbulmer