procedure TForm1.btnSaveAsClick(Sender: TObject);
var
  aJpg: TJpegImage;
  tsStream: TStream;
begin
  aJpg := TJpegImage.Create;
  tsStream := TStream.Create;
  try
    Image1.Picture.Bitmap.SaveToStream(tsStream);
    aJpg.LoadFromStream(tsStream);
    aJpg.SaveToFile('cc.jpg');
  finally
    aJpg.Free;
    tsStream.Free;
  end;
end;
在“Image1.Picture.Bitmap.SaveToStream(tsStream);”时报错:Abstract error

解决方案 »

  1.   

    procedure TForm1.btnSaveAsClick(Sender: TObject);
    var
      aJpg: TJpegImage;
      mmStream: TMemoryStream;
    begin
      aJpg := TJpegImage.Create;
      mmStream := TMemoryStream.Create;
      try
        mmStream.Position := 0;
        Image1.Picture.Graphic.SaveToStream(mmStream);
        aJpg.LoadFromStream(mmStream);
        aJpg.SaveToFile('cc.jpg');                                                            
      finally
        aJpg.Free;
        mmStream.Free;
      end;
    end;可以通过,但保存为的jpg文件大小为0k,且没有图像。怎么回事?谢谢!
      

  2.   

    将 Image1.Picture.Graphic.SaveToStream(mmStream); 的Graphic改为Bitmap也是不行。
      

  3.   

    在 aJpg.LoadFromStream(mmStream); 之前加一名句:mmStream.Position := 0;
      

  4.   

    to toplor:加了,报“Jpeg Error #52”mmStream.Position := 0  在 Image1.Picture.Graphic.SaveToStream(mmStream); 之上没有问题,在它下面就抱错。谢谢!
      

  5.   

    TStream是个抽像类,不能创建的将TBitmap或TGraphic转换为TJpegImage,就可以保存了,根本用不着用流来转换
      

  6.   

    procedure TForm1.btnSaveAsClick(Sender: TObject);
    var
      aJpg: TJpegImage;
    begin
      aJpg := TJpegImage.Create;
      try
        aJpg.Assign(Image1.Picture.Bitmap);
        aJpg.SaveToFile('cc.jpg');
      finally
        aJpg.Free;
      end;
    end;