Iva*_*n Z 3 delphi image image-processing
我已编码图像,并希望在我的程序中解码它们.图像解码基于Loren Pechtel的答案:图像文件在Stream中加载,解码,转换为MemoryStream,然后由TSynPicture类从MemoryStream加载.Delphi代码如下:
function loadEncodedImage(filename, keycode : string) : TBitmap;
syn : TSynPicture;
fs : TFileStream;
ms : TMemoryStream;
buf : AnsiString;
begin
result := nil;
try
fs := TFileStream.Create(filename, fmOpenRead);
SetLength( buf, fs.Size );
fs.ReadBuffer( buf[1], fs.Size );
// ....
// Here I decode data stored in buf and put it into buf again.
// ....
ms := TMemoryStream.Create();
ms.SetSize( fs.Size );
ms.WriteBuffer( buf[1], fs.Size );
syn := TSynPicture.Create();
syn.LoadFromStream( ms );
result := syn.ToBitmap;
finally
FreeAndNil( fs );
FreeAndNil( syn );
end;
end;
Run Code Online (Sandbox Code Playgroud)
如你所见,我使用两个内存缓冲区:buf和TMemoryStream.如何优化此代码以避免双内存使用?