У меня есть проект, в котором мы должны прочитать двоичный файл, который содержит пиксели изображения и вывести компоненты RGB, чтобы иметь компоненты между 0 и 255. Так что я сделал это, только моя программа ничего не печатает, Я не знаю почему (здесь я просто пытаюсь напечатать первое значение Pixgreen, которое является массивом, содержащим красный компонент каждого пикселя).
int main(void) {
FILE *f_in = fopen("Pixmap.bin", "rb"); // ”rb" ouverture en lecture, binaire
if(f_in == NULL ) {
perror("Erreur lors de l'ouverture en lecture\n");
return -1;
}
unsigned int myH;
size_t r2 = fread(&myH, sizeof(myH), 1, f_in);
printf("Hauteur: %d \n", myH);
unsigned int myW;
size_t r3 = fread(&myW, sizeof(myW), 1, f_in);
printf("Largeur: %d \n", myW);
int *Pix=malloc(myH*myW*sizeof(int));
for (int i = 0; i < myW*myH; ++i) {
size_t r4= fread(&Pix[i], sizeof(Pix), 1, f_in);
//printf("0x%08X,", Pix[i]);
//printf("%d,", Pix[i]);
}
free(Pix);
fclose(f_in);
int Pixred[myW*myH];
int Pixgreen[myW*myH];
int Pixblue[myW*myH];
for (int q=0; q<myH; q++) {
for (int s=0; s<myW; s++) {
//Pixred[myW*q+s]=(Pix[myW*q+s]&0xFF0000)>>16;
//Pixgreen[myW*q+s]=(Pix[myW*q+s]&0x00FF00)>>8;
//Pixblue[myW*q+s]=(Pix[myW*q+s]&0x0000FF)>>0;
Pixred[myW*q+s]=(Pix[myW*q+s] >> 16) & 0xff;
Pixgreen[myW*q+s]=(Pix[myW*q+s] >> 8) & 0xff;
Pixblue[myW*q+s]=Pix[myW*q+s] & 0xff;
}
}
printf("%d,\n",Pixred[1]);
fflush(stdout);
} // was missing...