use JPEG; procedure SaveJpegPic(AImage: TImage); 
var 
  AJpeg: TJpegImage; 
begin 
  AJpeg := TJpegImage.Create; 
  try 
    AJpg.Assign(AImage.Picture.Graphic); 
    //若自定义压缩能力,可以设置AJpeg的CompressionQuality属性 
    //然后AJpg.Compress; 
    AJpg.SaveToFile('C:\Temp\a.jpg'); 
  finally 
    AJpg.Free; 
  end; 
end;

解决方案 »

  1.   

    function Bmp2Jpg(Bmp: TBitmap; Quality: Integer = 100): TJpegImage; begin   Result := nil;   if Assigned(Bmp)   then begin   Result := TJpegImage.Create;   Result.Assign(Bmp); {Its all folks...}   Result.CompressionQuality := Quality;   Result.JPEGNeeded; {Key method...}   Result.Compress;   end;end;注意:JPEGNeeded过程转换并存储图像数据到内部的JPEG数据。我们无法直接存取JPEG 内部数据,因为D5并没有提供jpeg.pas单元的源码。但是可以通过JPEGNeeded和DIBNeeded过程来操作它。 
      

  2.   

    下面是menxin 大侠的代码
      
    function BmpToJpeg(SourceBMP:TBitMap;CompressQ:Integer):TJPEGImage ;
    var R:TJPEGImage;
    begin
      R:=TJPEGImage.Create;
      R.Assign(SourceBMP);
      R.JPEGNeeded;
      R.CompressionQuality:=CompressQ;
      R.Compress;
      R.SaveToFile('C:\A.JPG');
      Result:=R;
      R.free;
    end;