用程序读一个800*600的图像bmp格式
然后等比例缩小20% 保存为另一外一幅图bmp格式,怎样做

解决方案 »

  1.   

    以下是我前不久写得,你可以略加修改一下,就行了
    procedure TfrmInsert.ZoomImage(var Bitmap:TBitmap; SetWidth:integer=320; SetHeight:integer=240);
    var
          DstRect: TRect;
    begin
      // Image1.Picture.Graphic.LoadFromFile('D:\1.bmp');
       Bitmap.Width := SetWidth;
       Bitmap.Height := SetHeight;   Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Image.Picture.Graphic);//其中Image为窗体上的控件!   Image.Picture.Graphic := Bitmap;
       Image.Invalidate; end;
      

  2.   

    //图形放缩过程
    procedure ZoomImage(var Bitmap: TBitmap; SetWidth: integer = 320; SetHeight:
      integer = 240);
    var
      BitMapTmp: TBitmap;
    begin
      BitMapTmp := TBitmap.Create;
      try
        BitMapTmp.Assign(BitMap);
        Bitmap.Width := SetWidth;
        Bitmap.Height := SetHeight;
        Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect, BitMapTmp);
      finally
        BitMapTmp.Free;
      end;
    end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        BitBtn1: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure ZoomImage(var Bitmap: TBitmap; SetWidth: integer = 320; SetHeight:
      integer = 240);
    var
      BitMapTmp: TBitmap;
    begin
      BitMapTmp := TBitmap.Create;
      try
        BitMapTmp.Assign(BitMap);
        Bitmap.Width := SetWidth;
        Bitmap.Height := SetHeight;
        Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect, BitMapTmp);
      finally
        BitMapTmp.Free;
      end;
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      BitMap:TBitMap;
      W,H:Integer;
    begin
      BitMap:=TBitMap.Create;
      BitMap.LoadFromFile('C:\1.BMP');
      W:=Round(Bitmap.Width*0.8);
      H:=Round(Bitmap.Height*0.8);
      ZoomImage(Bitmap,W,H);
      Image1.Picture.Bitmap:=Bitmap;
    end;end.
      

  4.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      BitMap:TBitMap;
      W,H:Integer;
    begin
      BitMap:=TBitMap.Create;
      BitMap.LoadFromFile('C:\1.BMP');
      W:=Round(Bitmap.Width*0.8);
      H:=Round(Bitmap.Height*0.8);
      ZoomImage(Bitmap,W,H);
      Bitmap.SaveToFile('C:\2.BMP');//save to...
      Image1.Picture.Bitmap:=Bitmap;
    end;
      

  5.   


       Bitmap.Canvas.StretchDraw这个函数就行