国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發(fā) > HTML5 > 正文

Html5 canvas畫圖白板踩坑

2024-09-05 07:23:31
字體:
供稿:網(wǎng)友

最近接手了一個(gè)小型的H5,最主要的功能大概就是拍照上傳和canvas畫板了。

主要是記錄一下自己菜到像傻子一樣的技術(shù)。

1、canvas畫板隔空打牛!畫布越往上部分錯(cuò)位距離越小,越往下距離越大。

2、圖片上傳!白板涂鴉的內(nèi)容是以base64的形式傳給后端工程師的,圖片上傳的圖片是路徑,后端要求統(tǒng)一格式,所以需要把路徑轉(zhuǎn)為base64。

3、算是谷歌的限制,前端發(fā)起請求后端可以收到,也給了返回值,但前端在瀏覽器里看不到返回值。

就上面的問題做個(gè)記錄。把我的解決辦法記錄一下,不是最優(yōu)的還有可能是錯(cuò)誤的,如果你看到能碰撞出你的想法或者暫時(shí)幫到你那就太好了,如果沒有也希望得到你的幫助,一起加油!

先說一下項(xiàng)目的大體情況,該項(xiàng)目是一個(gè)H5,用的原生,框架是Mui。下面是解決辦法:

1、畫板隔空打牛的這個(gè)問題解決辦法是畫板的寬高等于手機(jī)屏幕的寬高就不會(huì)出現(xiàn)這個(gè)問題了,之所以會(huì)出現(xiàn)這個(gè)問題是你在頁面上使用高了,把畫布的大小改變了從而位置發(fā)生了改變。不要給css定高。如果需求實(shí)在需要寫,那就使用定位,脫離文檔流。

2、js圖片轉(zhuǎn)base64

方式一:Blob和FileReader 對象

實(shí)現(xiàn)原理:

  • 使用xhr請求圖片,并設(shè)置返回的文件類型為Blob對象[xhr.responseType = "blob"]
  • 使用FileReader 對象接收blob
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>js 圖片轉(zhuǎn)base64方式</title></head><body>    <p id="container1"></p>    <script>        getBase64("https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg")        function getBase64(imgUrl) {            window.URL = window.URL || window.webkitURL;            var xhr = new XMLHttpRequest();            xhr.open("get", imgUrl, true);            //只要拿到這個(gè)blob,問題就好解決了所以它挺重要的。            xhr.responseType = "blob";            xhr.onload = function () {                if (this.status == 200) {                    //這個(gè)時(shí)候得到了一個(gè)blob對象                    var blob = this.response;                    console.log("blob", blob)                    let oFileReader = new FileReader();                    oFileReader.onloadend = function (e) {                        let base64 = e.target.result;                        console.log("打印出來看看", base64)                    };                    oFileReader.readAsDataURL(blob);                    //為了在頁面顯示圖片,可以刪除                    var img = document.createElement("img");                    img.onload = function (e) {                        window.URL.revokeObjectURL(img.src); // 清除釋放                    };                    let src = window.URL.createObjectURL(blob);                    img.src = src                    document.getElementById("container1").appendChild(img);                }            }            xhr.send();        }    </script></body></html>

方式二:canvas.toDataURL()方法

實(shí)現(xiàn)原理:

  • 使用canvas.toDataURL()方法
  • 需要解決圖片跨域問題 image.crossOrigin = '';
  • 使用了Jquery庫的$.Deferred()方法
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>js 圖片轉(zhuǎn)base64方式</title></head><body><p id="container2"></p>    <script src="https://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>    <script>        let imgSrc = "https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg";        //width、height調(diào)用時(shí)傳入具體像素值,控制大小 ,不傳則默認(rèn)圖像大小        function getBase64Image(img, width, height) {            var canvas = document.createElement("canvas");            canvas.width = width ? width : img.width;            canvas.height = height ? height : img.height;            var ctx = canvas.getContext("2d");            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);            var dataURL = canvas.toDataURL();            return dataURL;        }        function getCanvasBase64(img) {            var image = new Image();            image.crossOrigin = '';            image.src = img;            var deferred = $.Deferred();            if (img) {                image.onload = function () {                    deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理                    document.getElementById("container2").appendChild(image);                }                return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']            }        }        getCanvasBase64(imgSrc)            .then(function (base64) {                console.log("看看結(jié)果",base64);            }, function (err) {                console.log(err);            });    </script></body></html>

3、前端調(diào)用接口返回200,后端有返回,但是控制臺(tái)Network Response為空,沒展示任何信息。

解決辦法:

1、在js里面debugger,可以看到后臺(tái)是否有返回?cái)?shù)據(jù)。

2、直接console.log(),直接把返回值打印出來,查看返回的數(shù)據(jù)格式,方便前端進(jìn)行數(shù)據(jù)的處理。

 因?yàn)楹蠖朔祷氐臄?shù)據(jù)較多,而且數(shù)據(jù)格式復(fù)雜,所以可能是Chrome的Response對數(shù)據(jù)長度或者大小進(jìn)行對有控制,所以導(dǎo)致沒顯示。

另外發(fā)現(xiàn)一個(gè)控制臺(tái)錯(cuò)誤提示,Uncaught SyntaxError:Invalid shorthand property initializer

原因data中的一個(gè)屬性冒號寫成了“=”

解決:把等號改成冒號;

寫在最后~

到此這篇關(guān)于Html5 canvas畫圖白板踩坑的文章就介紹到這了,更多相關(guān)Html5 canvas白板內(nèi)容請搜索武林網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
eeuss影院网站免费观看| 国产欧美在线观看视频| 国产69精品久久久久孕妇国产69久久| av在线播放av| 高清av中文在线字幕观看1| 91资源在线观看| 国产麻豆麻豆| 国产99re66在线视频| 国产黄色免费网站| 国产视频三级在线观看播放| 激情丁香久久| 福利在线视频导航| 2021av天天| 九九热在线视频观看| 国产三级视频在线播放线观看| 国产三级在线免费观看| 精品视频三区| 丁香花在线电影| 国产黄色在线| av在线不卡网站| 国产精品自拍在线观看| 国产精品久久麻豆| 日本三级视频网站| 最新中文字幕在线视频| 看成年女人免费午夜视频| 伊人免费视频| www中文字幕在线观看| 亚洲视频在线网| 九九热在线视频| 2019天天操夜夜操| 最近中文字幕在线中文视频| 99色在线观看| 中文字幕色视频| 欧美专区日韩| 精品国产福利一区二区在线| 国产美女视频网站| 一级黄色av| 伊人电影在线观看| 中文字幕在线免费| 国产精品综合久久久久| 超碰在线观看免费版| 免费看ww视频网站入口| www.夜夜操.com| 青青草免费在线视频| 在线观看午夜av| 亚洲精品影院在线| 欧美日韩国产亚洲沙发| 欧美艹逼视频| 国产在线观看18| 国产永久免费| 国产青草视频在线观看视频| 国产经典av| 午夜影院在线免费观看| 亚洲大香人伊一本线| 四虎成人精品在永久在线观看| 国产精品免费视频一区一| 国产精品久久在线| 国产福利小视频在线观看| 在线观看av网站| 久久久久国产精品嫩草影院| 国产鲁鲁视频在线观看免费| 久久这里精品| 国产网站麻豆精品视频| 国产精品国产三级国产试看| 国产亚洲精品久久久网站好莱| 最好看更新中文字幕| 91最新在线| 黄色片大全在线观看| 国产精品视频一区二区三区麻豆| 国产青青草在线| www在线视频观看| 国产区视频在线| 欧美午夜电影一区二区三区| 国产视频97| 青青草免费在线视频| 国产精品被窝福利一区 | 日本不卡影院| 中文字幕在线免费视频| 在线免费看黄网站| 中文字幕网在线| 免费在线高清av| 国产高清自拍视频在线观看 | 国产又色又爽又黄刺激在线视频| 国产日韩精品在线看| 欧美婷婷久久五月精品三区| 国产经典av| 国产女人在线视频| av人人综合网| 中文字幕日本在线观看| www狠狠操| 亚洲欧美自拍另类| 国产视频中文字幕在线观看| 成年女人在线视频| 中文乱码字幕高清在线观看| 国产日产一区二区三区| 国产在线一区二区视频| av免费在线一区二区三区| 2019天天操夜夜操| 国产视频一二区| 国产麻豆高清视频在线第一页 | 夜夜爽夜夜操| 国产导航在线| 国产福利资源| 精品国语对白精品自拍视| 中文字幕av中文字幕| 国产麻豆高清视频在线第一页 | 91av久久| 五月天天在线| 国产无遮挡又黄又爽免费软件| 91超碰免费在线| 中文字幕av中文字幕| 国产对白国语对白| 99在线免费视频| 18av在线播放| 四虎成人欧美精品在永久在线| www.91av| 国产美女高潮| 国产香蕉免费精品视频| 91网页在线观看| www.操操| 国产亚洲精品久久久久久青梅 | 国产黄网站在线观看| 国产三级在线播放| 在线国产一级| 久热中文字幕精品视频在线| 91av资源在线| 最新中文字幕av专区| 中文av字幕| 国产九色在线| 欧美成人精品福利网站| √天堂中文在线| 亚洲欧美自拍另类| 国产视频三区| 日本高清中文字幕二区在线| 国产网红在线| 久久久久久日本一区99| 国产a国产a国产a| 国产美女在线免费观看| 亚洲精品成人a| 国产精品xxx电影| 激情视频国产| 亚洲欧美久久婷婷爱综合一区天堂| 久久国产综合视频| 99热国产在线| 国产高清免费视频| 国产免费av网站| 免费在线看v| av日韩国产| 国产不卡视频| 最近中文字幕在线中文视频| 九九在线免费视频| 日本成人在线播放| 在线看黄网址| 在线中文免费视频| 91极品在线| 91在线最新| 国产高清在线| 国产在线高潮| 天天操夜夜摸| 国产一卡2卡3卡免费网站| 久久久久久久美女| 国产在线传媒| 日本中文字幕在线看| 激情四房婷婷| 国产九色在线| 国产国产国产国产国产国产| 国产h在线观看| 天天干天天摸| 超碰在线97国产| 最新中文字幕在线| 国产欧美黑人| 亚洲国产日韩在线人成电影| 在线观看av网站永久| www亚洲天堂| 国产麻豆视频网站| 国产区av在线| 亚洲第一成年免费网站| 免费男女羞羞的视频网站中文字幕| 激情综合网五月激情| 中文字幕在线观看av| 97人人在线| 牛牛精品视频在线| 国产系列在线观看| 亚洲综合天堂网| 91xxx在线观看| 在线免费观看黄色av| 国产在线资源| 国产日本视频| 欧美精品小视频| 国产黄色免费网| 成人免费一区二区三区视频网站| 中文字幕第一页在线| 性国产高清在线观看| 中文字幕在线免费| 天堂√中文在线| 91国内精品在线视频| 粉嫩av一区| 美女网站在线观看| 在线天堂中文www视软件| 国产免费福利|