如果BMP已经是文件,问题好解决,但现在BMP是TBitmap.Create,已经在内存中,如何与TJPEGImage.Create直接转换.最后保存为jpg文件.请大侠给出Code,共同讨论.

解决方案 »

  1.   

    呵呵,通过调用TJPEGImage对象的Assign方法来实现,例如:procedure TForm1.Button1Click(Sender: TObject);
    var
      jpeg1:TJPEGImage;
      bmp1:TBitmap;
    begin
    jpeg1:=TJPEGImage.Create;
    bmp1:=TBitmap.Create;
    bmp1.Width:=200;
    bmp1.Height:=200;
    //bmp1.LoadFromFile('c:\123.bmp');
    bmp1.Canvas.TextOut(1,1,'测试');
    jpeg1.Assign(bmp1);
    jpeg1.SaveToFile('c:\abc.jpg');
    bmp1.free;
    jpeg1.free;
    end;
      

  2.   

    var
      MyJpeg: TJpegImage;
      Image1: TImage;
    begin
      Image1:= TImage.Create(self);
      MyJpeg:= TJpegImage.Create;
      Image1.Picture.Bitmap.LoadFromFile('c:\windows\desktop\aa.BMP');  // Load the Bitmap from a file
      MyJpeg.Assign(Image1.Picture.Bitmap);  // Assign the BitMap to MyJpeg object
      MyJpeg.CompressionQuality:=StrToInt('75');
      MyJpeg.Compress;
      MyJpeg.SaveToFile('c:\windows\desktop\test.JPG'); // Save the JPEG to Disk
    end;