首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么将Socket中接收到的图片数据流保存为jpg

2012-04-14 
如何将Socket中接收到的图片数据流保存为jpgVC代码:LoadJpeg((BYTE*)pCtrl-listJpgBuff[pCtrl-PrevBuff]

如何将Socket中接收到的图片数据流保存为jpg
VC代码:

LoadJpeg((BYTE*)pCtrl->listJpgBuff[pCtrl->PrevBuff].pBuff, pCtrl->listJpgBuff[pCtrl->PrevBuff].sizeBuff);
 
在Delphi中有没有相应方法? 求助


[解决办法]
我给你一个,这是我以前写的一个调用webservice 接口取得图片的方法,也是得到流后保存的。
var
iservice :DrvPictureImp;
ams:tmemorystream;
bcontent:tbytedynarray;
showcodestring:boolean;
isize:integer;
begin
if edit_clsbdh.Text='' then
begin
showmessage('请输入驾驶证号!');
exit;
end;
httprio1.WSDLLocation:='.\DrvPictureImp.xml';
httprio1.Service:='DrvPictureImpService';
httprio1.Port:='DrvPictureImp';
iservice:=httprio1 as DrvPictureImp;
bcontent:=iservice.getPictureMsgBySfzhm(edit_clsbdh.Text);
isize:=high(bcontent);
ams:=tmemorystream.Create;
try
if isize<=5 then
begin
showmessage('没有该驾驶证的照片信息,请确认驾驶证号号是否正确!');
iservice:=nil;
// ams.Free;
exit;
end
else
begin
ams.SetSize(isize);
move(bcontent[0],ams.memory^,isize);
ams.SaveToFile('print.jpg');
showmessage('下载完成!');
end;
iservice:=nil;
finally
ams.Free;
end;
[解决办法]
关键注意这里 fsRecv 是filestream

bufRecv是收到的字节,只需要保存到流里就可以直接存成文件
如果你的图片还需要做其他处理,可以考虑存到image或者bitmap中,然后在内存中自定一个tbitmap用copyrect 从canvas中复制处理完毕的图像再SaveToFile到文件中

GetMem(bufRecv,2000);//2000 must > iBYTESEND
Socket.ReceiveBuf(bufRecv^,iRecvLength);
fsRecv.WriteBuffer(bufRecv^,iRecvLength);

热点排行