Stocker pixels d'un bitmap dans un tableau
Bonjour, :)
Je sais que cette question est déjà arrivée, mais ça fait quand même plusieurs heures que je suis dessus et je n'ai toujours pas trouvé la solution, malgré mes recherches.
Comme l'indique le titre, je souhaite tout simplement récupérer chaque pixel d'une image bmp et les stocker dans un tableau à 2 dimensions. Je sais qu'un pixel peut être sous 2, 4, 8, 16, 24 ou 32 bits (j'en est peut-être ajouté un ou deux de trop).
J'ai regardé les aides qui expliquent la structure du bitmap, mais je ne comprends toujours pas où commence le début du tableau des pixels, et s'il faut sauter des lignes à certains moments, ou je ne sais quoi. :(
La seule chose que j'ai réussi à trouver jusqu'ici, c'est de relever les informations du header.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <stdio.h>
typedef struct
{
int T; /* taille de l'image */
int res; /* zone réservée */
int offset; /* adresse du dbt de l'image */
int info; /* taille de la zone info */
int L; /* largeur de l'image */
int H ; /* hauteur de l'image */
short nbplan; /* nbre de plans */
short bppixel; /* mode en bits / pixel */
int comp; /* format de compression */
int tim; /* taille de l'image en octets */
int Hres; /* résolution Horizontale */
int Vres; /* résolution Verticale */
int nbco; /* nbre de couleurs utilisées */
int impco; /* nbre de couleurs importantes */
} bmp;
int main()
{
FILE *bmp_file;
bmp bmp;
char sign[3];
bmp_file = fopen("image.bmp","r");
fgets( sign, sizeof sign , bmp_file);
fread( &bmp, sizeof bmp, 1, bmp_file );
printf("Largeur = %d\n", bmp.L);
printf("Hauteur = %d\n", bmp.H);
printf("Taille = %d\n", bmp.T);
printf("bppixel = %d\n", bmp.bppixel);
fclose(bmp_file);
return 0;
} |
Pouvez-vous me montrer comment faire ?
Par exemple, pour un bitmap avec 24 bits par pixel.