JavaScript如何接收并顯示字節(jié)流中的圖片
JS接收并顯示字節(jié)流中的圖片
寫了個(gè)網(wǎng)頁版貪吃蛇,需要在前端接受后端傳過來的字節(jié)流然后顯示,谷歌上搜了一下,最后的代碼如下,并且簡(jiǎn)單做下講解。
socket.onmessage = function(msg) { var bytes = new Uint8Array(msg.data); var blob = new Blob([bytes], { type: "image/png" }); var url = URL.createObjectURL(blob); document.getElementById('image').src = url; console.log("received some data"); }
剛又去谷歌上面搜了一下,為了寫這篇文章,又學(xué)了點(diǎn)新東西,畢竟自己沒有完全搞明白的話沒法給別人講。
msg.data指的是接收到的數(shù)據(jù)
JavaScript的websocket是事件驅(qū)動(dòng)的api,如果寫成event.data就直觀多了,
socket.onmessage = function(msg)
這里的函數(shù)接受的參數(shù)其實(shí)是另一個(gè)peer給它發(fā)送了數(shù)據(jù)這一事件,并不直接是另外一個(gè)peer發(fā)送的數(shù)據(jù)。
Uint8Array表示8位無符號(hào)整數(shù)的數(shù)組
剛剛試了一下,直接寫
var blob = new Blob([msg.data], { type: “image/png” });
也是可以的,字節(jié)流就是八位,和八位無符號(hào)整數(shù)是一樣的。
一定要多思考,多嘗試。
Blob對(duì)象可以表示
文件類型(file-like)的不可變的原始數(shù)據(jù),因?yàn)檫@種文件格式(數(shù)據(jù)排列格式)在JavaScript中不是原生支持的,所以需要用Blob表示。
在這里,blob變量就是png格式的圖片,它的內(nèi)部數(shù)據(jù)是bytes。
URL.createObjectURL方法會(huì)返回含有表示參數(shù)中的對(duì)象的url的DOMString,DOMString是UTF-16的字符串,因?yàn)镴avaScript中已經(jīng)支持UTF-16的String,所以它直接會(huì)被轉(zhuǎn)換成String。
(As JavaScript already uses such strings, DOMString is mapped directly to a String.)
Blob的url指的是
對(duì)象數(shù)據(jù)在內(nèi)存中的位置,這里可以通過url變量找到blob變量表示的那張png格式的圖片。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)String.Fomat的實(shí)例代碼
下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)String.Fomat的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-0925個(gè)讓你眼前一亮的JavaScript代碼技巧分享
學(xué)習(xí)強(qiáng)大的JavaScript一行代碼,能夠節(jié)省你的時(shí)間和代碼量,所以本文為大家整理了25個(gè)JavaScript實(shí)用代碼技巧,感興趣的小伙伴可以了解一下2023-07-07EasyUI閃屏EasyUI頁面加載提示(原理+代碼+效果圖)
這篇文章主要介紹了EasyUI閃屏EasyUI頁面加載提示(原理+代碼+效果圖)的相關(guān)資料,需要的朋友可以參考下2016-02-02JavaScript中字符串(string)轉(zhuǎn)json的2種方法
這篇文章主要介紹了JavaScript中字符串(string)轉(zhuǎn)json的2種方法,兩種方法分別是使用js函數(shù)eval()和、使用jquery.parseJSON()方法,需要的朋友可以參考下2015-06-06JS實(shí)現(xiàn)簡(jiǎn)單的下雪特效示例詳解
很多南方的小伙伴可能沒怎么見過或者從來沒見過下雪,這篇文章小編給大家?guī)硪粋€(gè)小Demo,模擬了下雪場(chǎng)景。感興趣的小伙伴快來跟隨小編一起學(xué)習(xí)一下吧2021-12-12一個(gè)可以得到元素真實(shí)的背景顏色的javascript腳本
一個(gè)可以得到元素真實(shí)的背景顏色的javascript腳本...2007-07-07TypeScript中type和interface的區(qū)別及注意事項(xiàng)
type的類型別用可以用戶其他的類型,比如聯(lián)合類型、元祖類型、基本類型,interface不行,下面這篇文章主要給大家介紹了關(guān)于TypeScript中type和interface的區(qū)別及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-10-10