Zitat:
und setzt die Farbe auf (R+G+B)/3
Dann hat man aber das Farbbild in ein Graustufenbild umgewandelt und nicht in ein S/W-Bild.
Delphi-Quellcode:
procedure ConvertTo1BitBitmap(Bitmap: TBitmap);
const
Blau = 1;
Gruen = 2;
Rot = 3;
type
PixArray = array[Blau..Rot] of Byte;
var
h, w, Wert, i: integer;
p: ^PixArray;
begin
Bitmap.PixelFormat := pf24bit; //Temporär für scanline
for h := 0 to Bitmap.Height - 1 do
begin
p := Bitmap.ScanLine[h];
for w := 0 to Bitmap.Width - 1 do
begin
Wert := (p^[Blau] + p^[Gruen] + p^[Rot]) div 3;
if Wert <= 85 then
for i := Blau to Rot do p^[i] := 0
else
if Wert <= 170 then
begin
if (h mod 2) = (w mod 2) then
for i := Blau to Rot do p^[i] := 0
else
for i := Blau to Rot do p^[i] := 255;
end else
for i := Blau to Rot do p^[i] := 255;
inc(p);
end;
end;
Bitmap.Monochrome := True;
end;
Diese Procedure ist hier irgend wo in der
DP zu finden.