麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > HTML5 > 正文

canvas生成帶二維碼海報的踩坑記錄

2024-09-05 07:23:02
字體:
來源:轉載
供稿:網友

canvas海報內容有背景圖,圓形頭像,用戶昵稱,鏈接的二維碼圖片。

問題如下

圖片不顯示

  • 繪制渲染的時候圖像不顯示:是因為圖片異步加載,所以canvas的操作需要放在onload事件中,否則圖片會不顯示,因為圖片不止一張,建議放在promise中,用async,await調用
  • canvas最終生成圖片分享出去,生成的圖片不顯示:是因為圖像跨域問題,設置img的attr,‘crossOrigin'為'Anonymous'就好了,但是要注意,如果不小心為base64也設置了這個參數,在低版本的安卓(我出現問題是在華為安卓4.4.2中)base64就不會顯示。

圖像模糊

一開始對安卓機型統一做了dpr=1的處理,結果安卓機上圖片非常的模糊,圓角頭像鋸齒嚴重,網上的解決方法無一成功,后來還是將dpr設為window.devicePixelRatio就好了,只是圖片的寬高最好設置為固定值,根據flexble自適應

部分代碼示例

// 頭像;const imgAvadar = await promiseLoadImg(this.userInfoExternal.headUrl);const imgSize = 40 * this.dpr;const imgPos = 24 * this.dpr;ctx.arc((this.canvas.width / 2), (imgPos + (imgSize / 2)), (imgSize / 2), 0, 2 * Math.PI);ctx.clip();ctx.drawImage(imgAvadar, ((this.canvas.width / 2) - (imgSize / 2)), imgPos, imgSize, imgSize);

 

new Promise(resolve => {    const img = new Image();    // base64添加了以下跨域配置,在低版本安卓中會不顯示圖片    if (src.indexOf('base64,') === -1) {        img.setAttribute('crossOrigin', 'Anonymous');    }    img.onload = function () {        resolve(img);    };    img.src = src;});

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情综合网俺也去 | 亚洲成人免费网站 | 黄色大片免费网站 | 羞羞视频免费网站 | 8x成人在线电影 | 最新av在线免费观看 | 1314av| 欧美18—19sex性hd | 久久亚洲春色中文字幕久久 | 久久久久国产成人精品亚洲午夜 | 成人一级黄色片 | 港台三级在线观看 | 线观看免费完整aaa 一二区成人影院电影网 | 中文字幕亚洲欧美 | 国产精品久久国产精品 | 激情宗合 | 免费视频一区 | 久久久久.com| 久久99精品久久久久久小说 | 国产高潮好爽好大受不了了 | 经典三级在线视频 | 国产午夜精品在线 | 涩涩伊人 | 久久久一区二区三区视频 | 亚洲欧美成aⅴ人在线观看 av免费在线播放 | 国产成人精品网站 | 国产精品成人免费一区久久羞羞 | 国产色爱综合网 | 精品国产一区二区亚洲人成毛片 | 国内久久久久 | a免费视频| 国产69久久精品成人看 | 91在线视频网址 | 亚洲综合精品成人 | 日本aaaa片毛片免费观看视频 | 欧美性生活久久久 | 成人在线精品视频 | 国产精品一品二区三区四区18 | 精品视频在线免费看 | 99在线热播精品免费 | 黄色网址进入 |