For j := 0 To hBmp.Height - 1 Do
    Begin
      P := heBmp.Scanline[j];
      Q := hBmp.Scanline[j];
      For i := 0 To hBmp.Width - 1 Do
      Begin
        Case (P[i]) Of
          3, 4, 5:Q[i] := 1;
          6, 8, 9:Q[i] := 2;
          1, 2, 7:Q[i] := 3;
        Else
          Q[i] := 0;
        End;
      End;
    End;请问如何提高效率

解决方案 »

  1.   

    Scanline的效率据说很高的,只是自己未尝尝试
      

  2.   

    const
      LUT: array[0..255] of byte =(0, 3, 3, 1, 1, 1, 2, 3, 2, 2, ...); // ... 全是0,自己写吧// ...var
      P, Q: PByteArray;For j := 0 To hBmp.Height - 1 Do
    Begin
      P := heBmp.Scanline[j];
      Q := hBmp.Scanline[j];
      For i := 0 To hBmp.Width - 1 Do
        Q[i] := LUT[P[i]];
    End;