Bonjour,
Quelqu'un peut-il me donner un exemple de code delphi pour convertir une image 8 bit en image 2 bit. Autrement dit une image en 256 niveaux de gris en image noir et blanc brute
Version imprimable
Bonjour,
Quelqu'un peut-il me donner un exemple de code delphi pour convertir une image 8 bit en image 2 bit. Autrement dit une image en 256 niveaux de gris en image noir et blanc brute
Des exemples,tu dois en trouver sur le forum, je ne l'ai jamais fait mais je sais
qu'il faut toucher TBitmap.PixelFormat avec la valeur pf1bit
Noir et Blanc, c'est DEUX positions, DEUX Valeurs 1 et 0 donc 1 bit
2 Bit donnerait 4 Couleurs 00, 01, 10 et 11 mais je ne connais pas !
Cela doit être pareil que Comment convertir une image 24 bits en 8 bits ?
Je te conseille d'abord de gérer toi même le passage en 00 et FF selon tes propres critères deux seuils puis de changer le format qui sinon fera une perte de données brutales
J'ai essayé ce code, mais le seuil de 128 (256/2) est-il convenable ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 BMP.PixelFormat := pf24Bit; BMP.Assign(Image1.Picture.Bitmap); bm.PixelFormat := pf1Bit; for j := BMP.Height - 1 downto 0 do begin rowGRAY := BMP.ScanLine[j]; for i := BMP.Width-1 downto 0 do begin With rowRGB[i] do Gray := (RgbtRed + RgbtGreen + RgbtBlue) DIV 3; if Gray<128 then C := clBlack else C := clWhite; bm.Canvas.Pixels[i,j] := C; end; end; Image3.Picture.Bitmap.Assign(bm);
Charge l'image et fixe le PixelFormat sur 1 bit, c'est suffisant. Il n'y a pas besoin de deux image +Scanline, etc.
Cela doit être le seuil par défaut et dans cas fait le plus simple comme le souligne AndNotOr
Ne fait un code plus complexe que si tu veux fournir un autre seuil genre ne conserver que le rouge en noir et blanc pour le resteCode:
1
2
3 BMP.LoadFromFile(...); BMP.PixelFormat := pf1Bit; BMP.SaveToFile(...);