我为你做好了,你的问题在于利用Monochrome将彩色位图转换为黑白位图时,将丢失
大量的颜色信息,所以你首先应该转换为灰度图,再转换为16色图,最后才是2色图!
procedure TForm1.Button1Click(Sender: TObject);
var
p: PByteArray;
w: Integer;
i, j: Integer;
begin
image1.Picture.LoadFromFile('e:/图片/end004.bmp');
image1.Picture.bitmap.pixelformat := pf24bit;
for i := 0 to image1.Picture.bitmap.height - 1 do
begin
p := image1.Picture.bitmap.scanline;
for j :=0 to image1.Picture.bitmap.width-1 do
begin
w :=(p[3*j] * 28 + p[3*j+1] * 151 + p[3*j+2]*77);//转换为灰度图
w := w shr 6;
p[3*j] := byte(w);
p[3*j+1] := byte(w);
p[3*j+2] := byte(w);
end;
end;
image1.Picture.bitmap.pixelformat := pf4bit;//转换为16色图
image1.Picture.bitmap.Monochrome:=true;//转换为2色图
end;