ben le plus c'est d'utiliser un composant TPaintBox.
1° Tu ouvres l'image au format bmp avec la méthode du composant (dont je ne me souviens plus du nom) ca doit etre Load File ou un truc dans le genre
2° apres tu recupere la hauteur et la largeur de l'image
3° tu utilise la propriete Pixels du TPaintBox pour obtenir la couleur de chaque pixels.
Attention, il faut separer les composantes R,V,B des couleurs pour en faire la moyenne.
Code :
- var nombre_de_pixels:int64;
- r,v,b:int64;
- c:integer;
- ...
- r:=0;
- v:=0;
- b:=0;
- nombre_de_pixels=largeur*hauteur;
- for i:=0 (ou 1) to largeur(-1)
- begin
- for j:=0 (ou 1) to hauteur(-1)
- begin
- c=nom_composant.Canvas.Pixels[i,j];
- r=r+Composante_rouge(c);
- v=v+Composante_verte(c);
- b=b+Composante_bleue(c);
- end;
- end;
- r=r/nombre_de_pixels;
- v=v/nombre_de_pixels;
- b=b/nombre_de_pixels;
|
Attention, ca fait quelque temps que je n'ai pas utilisé delphi alors il a surement des erreurs et il existe surement aussi un autre composant mieux adapté pour ce genre de chose (TImage peut etre).
Pour separer les composantes c'est tres facile :
r=((c shr 16) and 255);
v=((c shr 8) and 255);
b=((c ) and 255);
pour le vert c'est sur mais pour le rouge te le bleu il faut peut etre les inverser :
r=((c ) and 255);
v=((c shr 8) and 255);
b=((c shr 16) and 255);