我们这个项目是这样的 。http发一个长连接,服务器接到命令后不断向浏览器端推送图片数据流,然后再用ajax不断替换图片以达到像视频一样播放的效果(不想用ActiveX控件)。服务器端向浏览器端发送的数据是用C做的。现在我纠结的是我怎么获取这些数据流,并把这些数据流生成一个图片文件!!用抓包工具抓到是数据流大概如下:
HTTP Code: 200 ok
Content-Type: multipart/x-mixed-replace; boundary=1329898486
--1329898486
Content-Type: image/jpeg
Content-Length: 12233
……
……
HTTP Code: 200 ok
Content-Type: multipart/x-mixed-replace; boundary=1329898486
--1329898486
Content-Type: image/jpeg
Content-Length: 12233
……
……
还是其他的,如果是那样的话,这个设计就太蠢了。就算是你必须要返回图片这个设计也依然很蠢。长连接都用上了,居然返回这么复杂
一个报文,多个图片的数据被压缩在一个请求中返回了,需要前端自己分析二进制代码
然后截取出一张张的图片。先不说JS对二进制操作是是否擅长,就是能操作,浏览器
能承受这样的计算量吗?快点的浏览器还好说,IE6呢?就算这些也解决了客户端怎么
根据这些二进制显示出图片来,现代浏览器支持html5好说一点,把这些数据转化为
base64编码以data协议显示出来,IE6 IE7这些不支持Data协议的浏览器呢?如果必须要实现,感觉有两个路子可以走:
1. 使用Flash处理这些数据。Flash处理图像而二进制的能力要比JS方便很多,效率也更高2. 改成下服务器返回的数据让长连接返回这样的数据结构
<script>
try{
if(parent.showPic){
parent.showPic('image/jpeg', '<图片Base64编码>');
}
}catch(e){}
</script>
每推送一张图片输出一个这样的数据结构。这样最少能省去JS解析
图片的操作。
我们要的是实时显示摄像机监控到的东西,但是客户要求不用控件显示视频所以才想那样做的,图片一帧一帧的切换。 你刚才说的用Base64编码显示图片感觉挺不错!! 可是我如何获取那些图片的Base64编码呢?求教了,谢谢!!
后面的 1329898486 --1329898486 下面应该都是图像的信息了。如Content-Type,文件名等
http://leonardleonard.iteye.com/blog/276169
responseText得不到内容,因为返回来的信息没有打印到网页页面上去。就是因为responseText得不到内容所以我才想问问看出了这个还有别的方式可以获取得到内容。