在下在用Delphi試寫一個程式,這個程式的目的就把硬盤上的圖片的尺寸改變成自己想要尺寸.
比如說一個圖片放在'F:\picture\'它的尺寸為400象素*200象素.我要把它改變成套用300*160或是其它的尺寸.這個程式在下試了好幾種方法了,還是未能成功.現在在下真的是無計可施了,望有哪位路過的高人能夠指點迷經.

解决方案 »

  1.   

    var
       jpg: TJPEGImage;
       bmp: TBitmap;
       SourceJpg: TJPEGImage;
       FWidth, FHeight: Integer;
      SourceFileName, DescFileName: string;
    begin
      FWidth := 300;
      FHeight := 160;
      SourceFileName := 'c:\a.jpg';
      DescFileName := 'c:\b.jpg';
            bmp := TBitmap.Create;
            SourceJpg := TJPEGImage.Create;
            Jpg:= TJPEGImage.Create;
            try
              //读取源文件
              SourceJpg.LoadFromFile(SourceFileName);
              //缩小
              bmp.Width := FWidth;
              bmp.Height := FHeight;
              bmp.PixelFormat := pf24bit;
              bmp.Canvas.StretchDraw(Rect(0, 0, FWidth, FHeight), SourceJpg);
              //保存
              jpg.Assign(bmp);
              jpg.SaveToFile(DescFileName);
            finally
              bmp.Free;
              jpg.Free;
              SourceJpg.Free;
            end;
    end;
      

  2.   

    用 canvas的StretchDraw方法小虫正解!
      

  3.   

    但是我在編譯的時候提示 這行'bmp.Canvas:=StretchDraw(Rect(0, 0, FWidth, FHeight), SourceJpg)';cannot be assign to read-only property;,是不是前面要把它設成為可讀寫的才行呢?如果是的話要怎麽設?
      

  4.   

    http://www.wave12.com/web/SigCon.asp?bCate=39&sCateName=功能介绍&ID=138&CateName=wsImage3.5导航
      

  5.   

    不是 bmp.Canvas:=StretchDraw(Rect(0, 0, FWidth, FHeight), SourceJpg)
    是 bmp.Canvas.StretchDraw(Rect(0, 0, FWidth, FHeight), SourceJpg)