如果有什么收费的sdk包,也可以阿,

解决方案 »

  1.   

    //给你一个用线性代数的矩阵方法无损旋转的范例!!
    //保你好用!当时没写注释,你就将就着看吧!!
    //好的话,就给我多加点分啊!!!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button2: TButton;
        Button1: TButton;
        Image1: TImage;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      NewBmp: TBitmap;
      TempBmp: TBitmap;
      OldBmp: TBitmap;
    implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    type
      pRGBTripleArray = ^TRGBTripleArray;
      TRGBTripleArray = ARRAY[0..32768-1] OF TRGBTriple;
    var
      T: Real;
      k, i, j, bmpHeight, bmpWidth: Integer;
      RowRotated: pRGBTripleArray;
      RowOriginal: pRGBTripleArray;
      jOriginal, ioriginal: Integer;
    begin
      NewBmp:=TBitmap.Create;
      TempBmp := TBitmap.Create;
      TempBmp.PixelFormat := pf24bit;
      TempBmp.Width := image1.Width;
      TempBmp.Height := image1.Height;
      TempBmp.Canvas.Draw(0, 0, image1.picture.graphic);
      Canvas.Draw(120, 20, TempBmp);
      NewBmp.PixelFormat := pf24bit;
      NewBmp.Width:=TempBmp.width;
      NewBmp.height := TempBmp.height;
      bmpheight := TempBmp.height;
      bmpWidth := TempBmp.width;  for k:=1 to 10 do
      begin
        T := k*3.14/180;
        for j := bmpHeight-1 downto 0 do
        begin
          RowRotated :=  NewBmp.ScanLine[j];
          for i := bmpWidth-1 downto 0 do
          begin
            iOriginal := Round(i * Cos(T) + j * Sin(T));
            jOriginal := Round(-i * Sin(T) + j * Cos(T));
            if (iOriginal>=0) and (iOriginal <= bmpWidth-1) and
               (jOriginal>=0) and (jOriginal <= bmpHeight-1) then
            begin
              RowOriginal := TempBmp.ScanLine[jOriginal];
              RowRotated[i] := RowOriginal[iOriginal];
            end
            else
            begin
              RowRotated[i].rgbtBlue := 0;
              RowRotated[i].rgbtGreen := 0;
              RowRotated[i].rgbtRed := 255;
            end
          end
        end;
        Canvas.Draw(120, 20, NewBmp);
      end;
      NewBmp.Free;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     Canvas.Draw(120, 20, TempBmp);end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      image1.picture.LoadFromFile('1.bmp');
    end;end.
      

  2.   

    楼上的兄弟些:
    可能我没说的明白,重要的不是旋转,这个我也可以实现,是如何把一张不知道转了多少度(当然一般情况下应该不会大于45°了),把它扶正,好让我进行ocr识别(这是后续处理了).
    在等两天看看,有没有更实用的建议,这个星期一定结贴.sdk包也可以阿