bonjour a tous , je veux encore vous demander votre aide a propos d'un mini projet en c qu'un prof nous a demande de le faire , en effet on devait afficher l’entête de l'image de Lena.BMP et puis dessiner un triangle a partir des pixels de l'image . j'ai réussi a afficher l’entête mais je n'ai aucune idée comment faire pour dessiner ce triangle en parcourant les pixels de l'image voila ce que j'ai pu faire pour afficher l’entête de l'image .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
 
 
struct entete_struct {  //structure (globale) ou seront stockées les infos de l'entete
	char signature[2];
	int taille;
	int offset;
	int taille_entete;
	int largeur;
	int longueur;
	int plans;
	int bpp;
	int compression;
	int taille_image;
	int Hresolution;
	int Vresolution;
	int nbr_couleur;
	int nbr_couleur_importante;
}entete;
 
int hex2dec (unsigned char hex[4],int nombre) //Fonction permettant de convertir un nombre hexa
{					      //en décimal (plus facile à lire)
	int resultat = 0;
	int i;
 
	for (i = nombre - 1; i >= 0; i--)
	{
		resultat = resultat * 256 + hex[i];
	}
	return resultat;
}
 
void lire_fichier (const char* nom)
{
	unsigned char temp[4]; //Zone mémoire temporaire où on stoque ce qui est lu dans le fichier avant
	FILE * fichier;        //de le traiter.
 
	fichier = fopen (nom,"r");
 
	fread (&entete.signature,2,1,fichier); //signature codée sur 2 octets
	fread (&temp,4,1,fichier);
	entete.taille = hex2dec (temp,4); //taille totale du fichier, 4 octets
	fread (&temp,4,1,fichier); //reservé
	fread (&temp,4,1,fichier); //Offset de début de l'image, 4 octets
	entete.offset = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Taille de l'entete, 4 octets
	entete.taille_entete = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Largeur, 4 octets
	entete.largeur = hex2dec(temp,4);
	fread (&temp,4,1,fichier); //Longueur, 4 octets
	entete.longueur = hex2dec(temp,4);
	fread (&temp,2,1,fichier); //Nombre de plans ( 1 ), 2 octets
	entete.plans = hex2dec (temp,2);
	fread (&temp,2,1,fichier); //Nbre de bit par pixels, 2 octets
	entete.bpp = hex2dec (temp,2);
	fread (&temp,4,1,fichier); //Compression, 0 = rien, 4 octets
	entete.compression = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Taille de l'image, 4 octets
	entete.taille_image = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Resolution horizotale en pixels par mètre, 4octets
	entete.Hresolution = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Resolution verticale, en ixels par mètre, 4 octets
	entete.Vresolution = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Nombre de couleur utilisées, 0 = toutes, 4 octets
	entete.nbr_couleur = hex2dec (temp,4);
	fread (&temp,4,1,fichier); //Nombre de couleurs importantes, 0 = toues, 4 octets
	entete.nbr_couleur_importante = hex2dec (temp,4);
 
	//Si c'est un image 8 bit, cette entête est suivie de la palette.
        //Après la palette, ce sont les données de l'image
 
	fclose (fichier);
}
 
main ()
{
	lire_fichier ("lena512.bmp"); //remplacez ici par le fichier, ou par un scanf ;-)
 
	printf ("Signature : %s\n",entete.signature);
	printf ("Taille du fichier : %d\n",entete.taille);
	printf ("Offset de début de l'image : %d\n",entete.offset);
	printf ("Taille du Bitmap Info : %d\n",entete.taille_entete);
	printf ("Largeur : %d\n",entete.largeur);
	printf ("Longueur : %d\n",entete.longueur);
	printf ("Nombre de plans : %d\n",entete.plans);
	printf ("Bits par pixels : %d\n",entete.bpp);
	printf ("Schéma de compression : %d\n",entete.compression);
	printf ("Taille de l'image : %d\n",entete.taille_image);
	printf ("Résolution verticale : %d\n",entete.Vresolution);
	printf ("Résolution horizontale : %d\n",entete.Hresolution);
	printf ("Nombre de couleurs (0 = toutes) : %d\n",entete.nbr_couleur);
	printf ("Nombre de couleurs importantes (0 = toutes) : %d\n",entete.nbr_couleur_importante);
 
 
system("pause");
 
}
si vous pouvez m'aider a afficher le triangle ca sera sympa de votre part . merci d'avance .