/* Lecture des pixels */ /* Nombre d'octets par ligne */ nb_octets_ligne = image.biWidth * image.biBitCount / 8; /* Les octets vides qui ont été mis pour compléter les fins de ligne */ nb_octets_vides_ligne = image.biWidth % 4; /* allocations de la mémoire pour sauvegarder une ligne de couleur */ couleurs = malloc(nb_octets_ligne - nb_octets_vides_ligne + 1); /* la zone de couleur est nécessaire pour savoir ou commencer en partant du bas (car la lecture se fait de haut en bas) */ nb_octets_zone_couleur = (nb_octets_ligne + nb_octets_vides_ligne) * image.biHeight; /* Pour chaque ligne de pixels */ for (ligne = 1; ligne <= image.biHeight ; ligne++ ) { /* on part de la fin de la fin de la zone de couleurs, et on remonte au debut de la dernière ligne (la taille du header est de 54 octets) */ octet_start = 54 + nb_octets_zone_couleur - (nb_octets_ligne + nb_octets_vides_ligne) * ligne; /* On récupère la ligne */ couleurs = get_line(fichier, octet_start, nb_octets_ligne - nb_octets_vides_ligne); /* Pour chaque pixel de couleur */ for (i = 0; i < image.biWidth * image.biBitCount / 8 ; i = i + image.biBitCount / 8)