如何通过COM在服务/客户中传递图片????????????????????????????
解决方案 »
- 关于删除TStringList中的重复项目
- 50分求救cxgrid高手,我在窗体有若干个cxgrid,怎么判断当前焦点是哪个?
- Delphi程序如何获取和使用命令行参数?
- 关于except处理的简单问题
- 菜鸟问题:我想把一个DLL中的所有函数导入到工程中使用,如何做?
- 求教有关数据库和动态控件生成的问题!!
- 请估算一下一个人开发汉字输入法程序需要的时间(帮忙呀)
- 祝贺!妈的,终于找到工作了!up有分!
- ql的问题,select * from table where date1>=''01-10-10'' 到底行不行的
- 关于GIF图象显示问题
- 请高手帮助解决,提示类声明错误或不存在
- 一个小问题,如何屏蔽隐式调用post()方法?
1、通过IStream传递(详情可参考MSDN或者Delphi帮助)
2、将Stream包装到VarArray中。可以查看VarArrayLock函数的帮助。
3、用Base64编码将Stream内容编码成字符串,然后作为字符串发送。后两种方法都需要接收方对数据进行逆向解码还原。
用Base64编码将Stream内容编码成字符串,然后作为字符串发送
Delphi的EncdDecd单元,其中有这样几个函数
procedure EncodeStream(Input, Output: TStream);
procedure DecodeStream(Input, Output: TStream);
function EncodeString(const Input: string): string;
function DecodeString(const Input: string): string;TBitmap->TStream->string 发送 ->TStream->TBitmap
Stream 和字符串之间的转换用EncodeStream和DecodeStream就可以了.
uses EncdDecd,Graphics,Classes;
function BitmapToString(Bitmap:TBitmap):String;
function StringToBitmap(str:String):TBitmap;
implementation
function BitmapToString(Bitmap:TBitmap):String;
var
BitmapStream:TMemoryStream;
strStream:TStringStream;
begin
BitmapStream:=TMemoryStream.Create;
strStream:=TStringStream.Create('');
Bitmap.SaveToStream(BitmapStream);
BitmapStream.Position:=0;
EncodeStream(BitmapStream,strStream);
Result:=strStream.DataString;
BitmapStream.Free;
strStream.Free;
end;function StringToBitmap(str:String):TBitmap;
var
BitmapStream:TMemoryStream;
strStream:TStringStream;
begin
strStream:=TStringStream.Create(str);
BitmapStream:=TMemoryStream.Create;
DecodeStream(strStream,BitmapStream);
BitmapStream.Position:=0;
result:=TBitmap.Create;
result.LoadFromStream(BitmapStream);
BitmapStream.Free;
strStream.Free;
end;
end.