先记下来,试过后如果可用,就保留下来。
用到ZLIB和base64
Procedure StrToBmpStream(v: OleVariant; Var Stream: TMemoryStream);Var
Str: String;
MS1: TStringStream;
MS2: TMemoryStream;
Begin
If VarIsNull(v) Then Exit;
Str := VarToStr(v);
If Str = '' Then Exit;
MS1 := TStringStream.Create(Str);
MS2 := TMemoryStream.Create;
Base64DeCodeStream(MS1, MS2);
MS2.Position := 0;
ZDecompressStream(MS2, Stream);
Stream.Position := 0;
FreeAndNil(MS2);
FreeAndNil(MS1);
End;
Function BmpStreamToStr(Stream: TMemoryStream): String;
Var
MS1: TMemoryStream;
MS2: TStringStream;
Begin
MS1 := TMemoryStream.Create;
MS2 := TStringStream.Create('');
Stream.Position := 0;
ZCompressStream(Stream, MS1, zcMax);
MS1.Position := 0;
Base64EnCodeStream(MS1, MS2);
Result := MS2.DataString;
FreeAndNil(MS2);
FreeAndNil(MS1);
End;
ms := TMemoryStream.Create;
StrToBmpStream('这里是BASE64编码的字符', ms);
image1.Picture.Bitmap.LoadFromStream(ms);
MS.Clear;
image1.Picture.Bitmap.SaveToStream(MS);
str:=BmpStreamToStr(MS)
将字符保存到XML即可