C'est un code assez simple mais reservé aux ordi a processeur 633MHz et + car la conversion d'une image tres petite est assez longue.
Copier ce source dans une procédure ButtonClick et ajouter deux TImages :
- le premier, nomé image1, contient l'image de départ.
- le second, nommé image2, contient l'image d'arrivée.
Source / Exemple :
var //def des variables
x,y:integer;
pix,r,v,b:variant;
begin
for x:=1 to image1.picture.width do //on prend une ligne
begin
for y:=1 to image1.picture.height do //les colonnes de cette ligne
begin
pix:=image1.canvas.Pixels[x,y]; //on prend les couleurs RVB
r:=int(pix mod 256); //rouge
V := Int((pix - r) / 256 Mod 256); //vert
B := Int((pix - r) / 256 / 256); //bleu
R := (r + V + B) / 3; //ajout des trois couleurs puis division par trois pour obtenir un niveau de gris
image2.Canvas.pixels[x,y]:=rgb(r,r,r); //ecriture du pixel en N&B a la même place sur l'autre Timage
end;
end; //end du bloc qui dboute avant for y:=1 to ...
Conclusion :
Vous pouvez aussi ne pas changer de TImage, c'est a dire avoir directement l'image décoloréé dans le TImage d'origine en modifiant les "image2." en "image1."
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.