我用Delphi的IDftp 写了个图片上传程序,但上传速度不理想,想在上传前对图片进行处理(如缩放/压缩),我把这些加进去,发现程序占用内存很多(200M),上传完后发现程序占用的内存没有完全释放(还有150M).有谁能帮忙给个思路?谢谢!~ 

解决方案 »

  1.   

    ftp没有办法吧. 你又不要求在上传过程中进行显示. 占200M 就不知你传的文件有多大了.
      

  2.   

    ftp没有办法吧. 你又不要求在上传过程中进行显示. 占200M 就不知你传的文件有多大了.
      

  3.   

    哪是你的程式有Bug, 和其它的無關, 請你花點時間看一下有哪些地方沒release.
    另如果你使用了component 來做的話, 也要看該component
      

  4.   

    to :helodd
    我图片不用显示,但他是一张接一接传的,我同时开了五个线程.
      

  5.   

    to : helodd
    try
                   bmp := TBitmap.Create;
                   bmp1 := TBitmap.Create;
                   J := TJpegImage.Create;
                   LStream := tmemorystream.Create();
                   bmp := LoadGraphicsFile(FrmLogin.FileListPath[FTimeout].Strings[number] +           FrmLogin.FileListName[FTimeout].Strings[number]);
                   MaxWH := max(j.Width, j.Height);                  {  图片缩放       }
                  if MaxWH > 1280 + 200 then
                  begin
                   seRax := (1280 / MaxWH) + 0.1;
               
                   bmp1.Width := Trunc(seRax * j.Width);
                   bmp1.Height := Trunc(seRax * j.Height);
          
                   SetStretchBltMode(bmp1.Canvas.Handle, HalfTone);
                   stretchblt(bmp1.Canvas.Handle, 0, 0, bmp1.Width, bmp1.Height,
                              j.Canvas.Handle,  0, 0, j.Width,  j.Height , SRCCOPY);
                   bmp1.PixelFormat := pf24bit;
                   J.Assign(bmp1);
                   J.CompressionQuality := 95;
                   J.Compress;
                   sleep(100);
                  J.SaveToStream(LStream);
                  IdFTP1.Put(LStream,FrmLogin.FileListName[FTimeout].Strings[number]);
    finally
             J.Free;
            bmp.Free;bmp1.Free;
            FreeAndNil(LStream);//LStream.Free;
    end;
    这是我缩放的主要代码,用到的都释放了呀.