国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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;});

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绵竹市| 潜山县| 哈巴河县| 镇平县| 岑巩县| 南郑县| 平顶山市| 永新县| 丰县| 雷波县| 依兰县| 临澧县| 建平县| 滨州市| 湖口县| 青州市| 通化县| 榆树市| 陈巴尔虎旗| 大兴区| 繁昌县| 怀远县| 汉源县| 抚顺市| 措勤县| 应城市| 调兵山市| 梧州市| 伊金霍洛旗| 惠安县| 南丹县| 怀仁县| 会昌县| 泉州市| 保靖县| 庆城县| 乐清市| 兴安县| 莱西市| 维西| 徐汇区|