procedure TForm1.Button1Click(Sender: TObject);
var
jpg: TJpegImage;
begin
jpg := TJpegImage.Create;
jpg.LoadFromFile('c:\1.jpg');
jpg.CompressionQuality:=40;
jpg.Compress;
jpg.SaveToFile('C:\AA.jpg');
end;
end.

解决方案 »

  1.   

    感觉是异步操作引起的:文件还没读完就开始压缩。不妨试试再加个按钮,把 CompressionQuality 及以后的代码都由它启动(这样 jpg 就不能是局部变量了)。
      

  2.   


    uses jpeg;procedure TForm13.btn1Click(Sender: TObject);
    var
      jpg: TJpegImage;
      bmp: TBitmap;
    begin
      jpg := TJpegImage.Create;
      bmp := TBitmap.Create;
      try
        jpg.LoadFromFile('c:\1.jpg');    bmp.Width := jpg.Width;
        bmp.Height := jpg.Height;
        bmp.Canvas.StretchDraw(bmp.Canvas.ClipRect, jpg);
        jpg.Assign(bmp);    jpg.CompressionQuality := 40;
        jpg.Compress;
        jpg.SaveToFile('C:\AA.jpg');
      finally
        bmp.free;
        jpg.free;
      end;
    end;