bonjour,
est-il possible de gérer des bitmaps en niveau de gris?
le Tcolor peut il convertir une couleur RVB en niveaux de gris?
par avance merci
bonjour,
est-il possible de gérer des bitmaps en niveau de gris?
le Tcolor peut il convertir une couleur RVB en niveaux de gris?
par avance merci
Le code suivant effectue une conversion d'un bitmap 24 bits en niveau de gris, en conservant la couleur de transparence:
Sur wikipedia, tu trouves d'autres formules qui donnent un rendu différent
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 RGBTRIPLE *pixels; if (Bitmap->PixelFormat != pf24bit) return; // convertit l'image en gris (voir Wikipedia) */ TColor tcol = Bitmap->TransparentColor; for (int y=0;y<Bitmap->Height;y++) { pixels = (RGBTRIPLE *) Bitmap->ScanLine[y]; for (int x=0;x<Bitmap->Width;x++) { int couleur; couleur = (pixels[x].rgbtBlue)*0x10000 + (pixels[x].rgbtGreen)*0x100+ (pixels[x].rgbtRed); if (couleur != (int) tcol) { double newcouleur = 0.2125*pixels[x].rgbtRed+ 0.7154*pixels[x].rgbtGreen+ 0.0721*pixels[x].rgbtBlue; pixels[x].rgbtBlue = (BYTE) newcouleur; pixels[x].rgbtGreen = (BYTE) newcouleur; pixels[x].rgbtRed = (BYTE) newcouleur; } } }
merci pour ta réponse
De rien. Tu peux essayer de faire varier les coefficients (ici 0.2125, 0.7154 et 0.0721) pour adapter le rendu à tes besoins.
Partager