delphi中怎样实现用xml存取bmp图片? delphi中怎样实现用xml存取bmp图片?查找了一天也没找到答案,郁闷!!!请高手帮忙!!!多谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; 一楼已经说了,你先将图片取出来进行base64编码,然后将编码后的字符串保存到xml中,用的时候再把base64字符串转换成你的图片 一楼给出的只是图片转换成base64字符串,反过来base64字符串怎么转换成图片并显示在image控件中? 用到ZLIB和base64Procedure 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即可 到盒子上下载一个NATIVEXML,里面有很详细的例子 顶楼上的那个将整个窗口序列化到 xml 中的例子的确很牛叉 测试中Base64DeCodeStream怎么报错啊?需要加什么单元? 用到ZLIB和base64---------------------------不知道怎么用啊!!!测试中Base64DeCodeStream怎么报错啊?需要加什么单元? caixinke(<<虎讯网>>hoosoon.com) 你还是回去睡觉吧 为什么我无权给可用分 加壳程序执行时,其父进程是谁? listview控件 interbase 创建存储过程的问题,急------,在线等 关于dxdbgrid问题(在线等!) 求助一个有关DBGridEh的怪问题 百分求Delphi团队合作开发模式,立即给分。 我的神呀,这是什么问题 数据库的统计 怎样在INTERBASE的数据库种用存储过程保存图片格式的数据???高分送上! 请教一下如何才能在fastreport中动态设置memoview显示的值 为什么Button中的属性modalResult:=mrCancle就可以实现程序的退出呢?
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;
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即可
那个将整个窗口序列化到 xml 中的例子的确很牛叉
---------------------------
不知道怎么用啊!!!测试中Base64DeCodeStream怎么报错啊?需要加什么单元?