pour tous les trucs de manipulations d'images ou de couleurs (algo + exemple en delphi), tu peux jeter un oeil ici: http://www.efg2.com/Lab/
je n'y ai pas vu qqchose qui ressemble a ce que tu voulais faire, tu peux toujours jeter un oeil a cet article ( http://www.efg2.com/Lab/ImageProcessing/Scanline.htm ) qui t'explique comment acceder aux pixels d'une image d'une maniere plus rapide que la propriete .pixels (si tu desires traiter des images de taille plus importante)
Dinofly
Merci beaucoup, je crois que je vais y arriver :bounce:
darkoli
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);
Dinofly
Tout est dans le titre, je débute au fait. Y a-t-il une fonction spéciale ou faut faire un algo?