50分求简单问题,用ServerSocket作服务器,如何将IMAGE框内的图片发送到客户端IE里?(今晚有效)(50分)

  • 主题发起人 主题发起人 liboy.com
  • 开始时间 开始时间
L

liboy.com

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中有一个IMAGE控件,里面有一幅图片,
运行后端听本地8888端口,在IE中访问http://127.0.0.1:8888/
直接将图片以内存流发到客户端IE中
大概方法如下,但是试不成功,旁边也没什么书.请大家帮忙.

注:不要用读写文件来发送的方法,这个我实现了,但是我不想生成临时文件!!!!

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var fs: TMemorystream;
size: string;
begin
fs := TMemorystream.Create;
image1.Picture.Bitmap.SaveToStream( fs ); //将IMAGE框的内容保存到流中
fs.Position := 0;
size := inttostr( fs.Size );
socket.SendText( 'HTTP/1.1 200 OK' + #13#10
+ 'Cache-Control: no-cache' + #13#10
+ 'Pragma: no-cache' + #13#10
+ 'Content-Type: image/bmp' + #13#10
+ 'Content-Length:' + Size + #13#10 + #13#10
);

socket.SendStream( fs ); SOCKET中发送出去.
socket.close;
fs.Free;
end;
 

fs := TMemorystream.Create;
image1.Picture.Bitmap.SaveToStream( fs ); //将IMAGE框的内容保存到流中
这里有问题啊。
 

我需要的是正确的代码呀。
 
本人已经解决了,原来是IMAGE框里面的图片必须是BMP格式,呵呵

var m:TMemoryStream;
p:Pointer;
html, s :string;
i, j: Integer;
---------

m := TMemoryStream.Create;
image.Picture.Bitmap.SaveToStream( m );

GetMem( p, m.size );
m.Position := 0;
m.Read( p^, m.size );

html := 'HTTP/1.1 200 OK'#13#10;
html := html + 'Cache-Control: no-cache'#13#10;
html := html + 'Accept-Ranges: bytes'+#13+#10;
html := html + 'Expires:Fri, 18 Oct 1980 06:42:26 GMT'+#13+#10;
html := html + 'Pragma: no-cache'#13#10;
html := html + 'Content-Type: image/bmp'+#13+#10;
html := html + 'Content-Length: ' + inttostr( m.size ) + #13#10 + #13#10;
Socket.SendText( html );
Socket.SendBuf( p^, m.size );
socket.Close;

FreeMem( p );
m.Free;
 
多谢支持
 
后退
顶部