请问各位谁有关于图像伪彩的代码,急需

解决方案 »

  1.   

    24位真彩图的伪彩化:var
      I,J,uG :Integer;
      P :PByteArray;
    begin
      Bmp :=TBitmap.Create;
      Bmp.Assign(Image.Picture.Bitmap);
      for J :=0 to Bmp.Height-1 do
      begin
        P :=Bmp.ScanLine[J];
        for I :=0 to Bmp.Width-1 do
        begin
          uG :=P[3*I];
          if (0<=uG) and (uG<63) then        //灰度------>伪彩色
          begin
            P[3*I+2] :=0;
            P[3*I+1] :=254-4*uG;
            P[3*I] :=255;
          end;
          if (64<=uG) and (uG<127) then
          begin
            P[3*I+2] :=0;
            P[3*I+1] :=4*uG-254;
            P[3*I] :=510-4*uG;
          end;
          if (128<=uG) and (uG<191) then
          begin
            P[3*I+2] :=4*uG-510;
            P[3*I+1] :=255;
            P[3*I] :=0;
          end;
          if (192<=uG) and (uG<=255) then
          begin
            P[3*I+2] :=255;
            P[3*I+1] :=1022-4*uG;
            P[3*I] :=0;
          end;
        end;
      end;
      Image.Picture.Bitmap.Assign(Bmp);
      Bmp.Free;
    end;