图片地址:
http://61.145.230.62/photo/pic1.bmp
http://61.145.230.62/photo/pic2.bmp
http://61.145.230.62/photo/pic3.bmp
http://61.145.230.62/photo/pic4.bmp
http://61.145.230.62/photo/pic5.bmp
http://61.145.230.62/photo/pic6.bmp

解决方案 »

  1.   

    procedure TForm1.PictureTwoValue(Bitmap: TBitmap);
    var
       X, Y: integer;
       P: pByteArray;
       newbmp: TBitmap;
       gray: byte;
    begin
       newbmp := TBitmap.Create;
       newbmp.PixelFormat := bitmap.PixelFormat;
       newbmp.Assign(bitmap);
       for Y := 0 to bitmap.Height - 1 do
       begin
          P := newbmp.ScanLine[Y];
          for X := 0 to bitmap.Width - 1 do
          begin
             gray := Round(0.299 * P[3 * X + 2] + 0.587 * P[3 * X + 1] + 0.11
                *
                P[3 * X]);
             // 灰化的计算公式
             if (gray > 128) then  // 这里128为阙值,这个需要你自己的需求看是否用这么多,也可以用动态阈值法
                gray := 255
             else
                gray := 0;
             
             P[3 * X + 2] := gray;
             P[3 * X + 1] := gray;
             P[3 * X] := gray;
          end;
       end;
       bitmap.Assign(newbmp);
    end;