cs_titio
Messages postés6Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention26 mars 2006
-
14 mai 2005 à 17:44
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 2007
-
15 mai 2005 à 12:23
Bonjour,
Je souhaite afficher des images bmp, tout en ayant la possibilité de modifier ce fichier. Pour cela, je le charge en memoire, et souhaite donc recuperer un pointeur sur le debut des données. J'utilise le code suivant. En principe, la structure BITMAP, par son membre bmBits devrait me donner ce pointeur, mais la, il est NULL. Comment faire pour recuperer ce pointeur ?
sebseb42
Messages postés495Date d'inscriptiondimanche 6 juillet 2003StatutMembreDernière intervention 9 novembre 20071 15 mai 2005 à 11:35
y a une methode super simple si tu connais deja l'encodage de ton image : dans une bmp, la donnée commence toujours au 54eme octet.
------------------------------------------------------------------
int len;
char *buffer;
FILE *fd;
fd = fopen("mon_image.bmp", "rb"); // ouverture du fichier
fseek(fd, 0, SEEK_END); // positionnement du "pointeur" de fichier a la fin
len = ftell(fd) - 54; // obtention de la taille du fichier moins les 54 octets de l'en-tete
fseek(fd, 54, SEEK_SET); // positionnement du pointeur au 54eme octet (on zap le header)
buffer = malloc(len); // allocation de la taille memoire suffisante pour charger la donner bitmap
fread(buffer, sizeof(char), len, fd); // on lit le fichier (a partir de la position 54 due au fseek() precedent)
fclose(fd); // on ferme le fichier
// buffer contient la donner bitmap
------------------------------------------------------------------
cette methode est super simple, et fonctionne toujours, apres il faut quand meme lire l'entete si tu veux connaitre la taille de l'image et son format de pixel (8, 16, 24, 32 bits) mais si ton format d'image est predefini et que tu le connais, tu peux faire ca :)