我一直在尝试将位图转换为压缩的JPEG以保存数据库空间,但到目前为止还没有成功。我使用 Delphi 11. 1与FMX。
我的代码如下所示:
var
NewBitmap: TBitmap;
CodecParams : TBitmapCodecSaveParams;
MS1 : TMemoryStream;
Surf: TBitmapSurface;
JpgQuality : TBitmapCodecSaveParams;
begin
...
JpgQuality.Quality := 100;
MS1.Position := 0;
Surf := TBitmapSurface.create;
try
Surf.assign(NewBitmap);
// use the codec to save Surface to stream
if not TBitmapCodecManager.SaveToStream(
MS1,
Surf,
// '.jpg', JpgQuality) then // THIS DOES NOT WORK
'.jpg') then // THIS DOES WORK BUT NO COMPRESSION (FORMAT MAY NOT EVEN BE JPEG)
raise EBitmapSavingFailed.Create(
'Error saving Bitmap to jpg');
finally
Surf.Free;
end;
...
end;
1条答案
按热度按时间unftdfkk1#
如果选中该功能:
可以看到
ASaveParams
是PBitmapCodecSaveParams
的类型:正如AmigoJack提到的,您需要使用指针: