var
s: string;
bm: TBitmap;
ms: TMemoryStream;
len: Int64;
begin
ms := TMemoryStream.Create;
bm := TBitmap.Create;
try
bm.LoadFromFile('d:\d.bmp');
//write string body size, body itself
s := 'A nice picture';
len := Length(s) * SizeOf(Char);
ms.Write(len, SizeOf(len));
ms.Write(PChar(s)^, len);
//now picture
bm.SaveToStream(ms);
//change string and picture to be sure we load new ones
bm.Canvas.FillRect(rect(0,0,100,100));
s := '';
//now restore and show
ms.Position := 0;
ms.Read(len, sizeof(len));
SetLength(s, len div SizeOf(Char));
ms.Read(PChar(s)^, len);
Caption := s;
bm.LoadFromStream(ms); //reads picture from current position
Canvas.Draw(0, 0, bm);
finally
ms.Free;
bm.Free;
end;
从另一个流加载的 jpeg 示例:
var
s: string;
ms, jpstream: TMemoryStream;
len: Int64;
jp: TJpegImage;
begin
ms := TMemoryStream.Create;
jpstream := TMemoryStream.Create;
jp := TJpegImage.Create;
try
//write string body size, body itself
s := 'A nice picture';
len := Length(s) * SizeOf(Char);
ms.Write(len, SizeOf(len));
ms.Write(PChar(s)^, len);
jpstream.LoadFromFile('d:\d.jpg');
jpstream.Position := 0;
ms.CopyFrom(jpstream, jpstream.Size);
//now restore ans show
ms.Position := 0;
ms.Read(len, sizeof(len));
SetLength(s, len div SizeOf(Char));
ms.Read(PChar(s)^, len);
Caption := s;
jp.LoadFromStream(ms);
Canvas.Draw(0, 0, jp);
finally
ms.Free;
jp.Free;
jpstream.Free;
end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.035994052886963 seconds