摘要:圖片數(shù)據(jù)繪制到先構(gòu)造對(duì)象,為,圖片之后繪制到的圖片文件數(shù)據(jù)繪制到還是先轉(zhuǎn)換成一個(gè),然后構(gòu)造對(duì)象,為,圖片之后繪制到利用上面的函數(shù),由對(duì)象得到格式的,再參考圖片數(shù)據(jù)繪制到轉(zhuǎn)換為對(duì)象并使用發(fā)送轉(zhuǎn)換為對(duì)象后,可以使用上傳圖像文件。
實(shí)現(xiàn)功能和適用業(yè)務(wù)
采集本地?cái)z像頭獲取攝像頭畫面,拍照保存,上傳服務(wù)器;
前端上傳圖片處理,展示,縮小,裁剪,上傳服務(wù)器
實(shí)現(xiàn)步驟調(diào)取本地?cái)z像頭(getUserMedia)/上傳圖片,將圖片/視頻顯示在瀏覽器上
拍照/轉(zhuǎn)換 將視頻拍照或是將圖片展示在canvas中
將canvas中的圖像,轉(zhuǎn)換成圖片格式(png,jpg等)上傳到服務(wù)器
上述兩種方式涉及到的格式轉(zhuǎn)換分別為:
獲取攝像頭: 攝像頭視頻流(blob)-> canvas 圖像 -> blob 圖片 上傳服務(wù)器
圖片上傳: 上傳的圖片(file) -> base64圖片 -> canvas 圖像 -> blob 圖片 上傳服務(wù)器
具體獲取攝像頭的方法可以參考:https://segmentfault.com/a/11...
var dataurl = canvas.toDataURL("image/png"); var dataurl2 = canvas.toDataURL("image/jpeg", 0.8);File對(duì)象轉(zhuǎn)換為dataURL、Blob對(duì)象轉(zhuǎn)換為dataURL
File對(duì)象也是一個(gè)Blob對(duì)象,二者的處理相同。
function readBlobAsDataURL(blob, callback) { var a = new FileReader(); a.onload = function(e) {callback(e.target.result);}; a.readAsDataURL(blob); } //example: readBlobAsDataURL(blob, function (dataurl){ console.log(dataurl); }); readBlobAsDataURL(file, function (dataurl){ console.log(dataurl); });dataURL圖片數(shù)據(jù)繪制到canvas
先構(gòu)造Image對(duì)象,src為dataURL,圖片onload之后繪制到canvas
var img = new Image(); img.onload = function(){ canvas.drawImage(img); }; img.src = dataurl;File,Blob的圖片文件數(shù)據(jù)繪制到canvas
還是先轉(zhuǎn)換成一個(gè)url,然后構(gòu)造Image對(duì)象,src為dataURL,圖片onload之后繪制到canvas
利用上面的 readBlobAsDataURL 函數(shù),由File,Blob對(duì)象得到dataURL格式的url,再參考 dataURL圖片數(shù)據(jù)繪制到canvas
readBlobAsDataURL(file, function (dataurl){ var img = new Image(); img.onload = function(){ canvas.drawImage(img); }; img.src = dataurl; });Canvas轉(zhuǎn)換為Blob對(duì)象并使用Ajax發(fā)送
轉(zhuǎn)換為Blob對(duì)象后,可以使用Ajax上傳圖像文件。
先從canvas獲取dataurl, 再將dataurl轉(zhuǎn)換為Blob對(duì)象
var dataurl = canvas.toDataURL("image/png"); var blob = dataURLtoBlob(dataurl); //使用ajax發(fā)送 var fd = new FormData(); fd.append("image", blob, "image.png"); var xhr = new XMLHttpRequest(); xhr.open("POST", "/server", true); xhr.send(fd);Canvas 轉(zhuǎn)換成 Blob格式
可以通過(guò) Canvas.toDataUrl 轉(zhuǎn)換成 DataUrl(base64) 再轉(zhuǎn)成 blob
可以直接轉(zhuǎn)成blob,可以通過(guò)canvas.toBlob轉(zhuǎn)換。然toBlob方法的瀏覽器兼容性不是很好,存在兼容性問(wèn)題,幸運(yùn)的是已有前人封裝好了toblob方法,直接拿來(lái)用就好了,適用于pc端和移動(dòng)端
地址:https://github.com/qiyubu/Jav...
具體過(guò)程和相關(guān)參考資料:
http://www.zhangxinxu.com/wor...
http://blog.csdn.net/cuixipin...
https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90449.html
摘要:圖片數(shù)據(jù)繪制到先構(gòu)造對(duì)象,為,圖片之后繪制到的圖片文件數(shù)據(jù)繪制到還是先轉(zhuǎn)換成一個(gè),然后構(gòu)造對(duì)象,為,圖片之后繪制到利用上面的函數(shù),由對(duì)象得到格式的,再參考圖片數(shù)據(jù)繪制到轉(zhuǎn)換為對(duì)象并使用發(fā)送轉(zhuǎn)換為對(duì)象后,可以使用上傳圖像文件。 實(shí)現(xiàn)功能和適用業(yè)務(wù) 采集本地?cái)z像頭獲取攝像頭畫面,拍照保存,上傳服務(wù)器; 前端上傳圖片處理,展示,縮小,裁剪,上傳服務(wù)器 實(shí)現(xiàn)步驟 調(diào)取本地?cái)z像頭(get...
摘要:主要部分如下瀏覽器調(diào)用攝像頭拍照瀏覽器調(diào)用攝像頭需要全新的對(duì)象,,通過(guò)此接口,可以調(diào)用攝像頭和麥克風(fēng),調(diào)用時(shí)需要用戶授權(quán)方可開啟。該方法參數(shù)為,返回值為一個(gè)標(biāo)準(zhǔn)對(duì)象。 標(biāo)題為最近遇到的一個(gè)實(shí)際要求,題目很簡(jiǎn)單,做起來(lái)挺費(fèi)心費(fèi)力。因?yàn)榧嫒菪约皾撛趩?wèn)題,目前單純做到desktop chrome only。參考資料多見于 http://www.html5rocks.com/zh/tutori...
摘要:失敗回調(diào)函數(shù)的參數(shù),可能的異常有硬件問(wèn)題用戶拒絕了當(dāng)前的瀏覽器實(shí)例的訪問(wèn)請(qǐng)求或者用戶拒絕了當(dāng)前會(huì)話的訪問(wèn)或者用戶在全局范圍內(nèi)拒絕了所有媒體訪問(wèn)請(qǐng)求。 getUserMedia API簡(jiǎn)介 HTML5的getUserMedia API為用戶提供訪問(wèn)硬件設(shè)備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開發(fā)者可以在不依賴任何瀏覽器插件的條件下訪問(wèn)硬件媒體設(shè)備。 getUserM...
摘要:失敗回調(diào)函數(shù)的參數(shù),可能的異常有硬件問(wèn)題用戶拒絕了當(dāng)前的瀏覽器實(shí)例的訪問(wèn)請(qǐng)求或者用戶拒絕了當(dāng)前會(huì)話的訪問(wèn)或者用戶在全局范圍內(nèi)拒絕了所有媒體訪問(wèn)請(qǐng)求。 getUserMedia API簡(jiǎn)介 HTML5的getUserMedia API為用戶提供訪問(wèn)硬件設(shè)備媒體(攝像頭、視頻、音頻、地理位置等)的接口,基于該接口,開發(fā)者可以在不依賴任何瀏覽器插件的條件下訪問(wèn)硬件媒體設(shè)備。 getUserM...
閱讀 2124·2019-08-29 16:53
閱讀 2699·2019-08-29 16:07
閱讀 2042·2019-08-29 13:13
閱讀 3267·2019-08-26 13:57
閱讀 1331·2019-08-26 13:31
閱讀 2433·2019-08-26 13:22
閱讀 1221·2019-08-26 11:43
閱讀 2084·2019-08-23 17:14