国产探花免费观看_亚洲丰满少妇自慰呻吟_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;});

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 逊克县| 杂多县| 江达县| 四会市| 东源县| 长岭县| 巨野县| 始兴县| 鸡泽县| 佛坪县| 江北区| 固始县| 怀来县| 海安县| 蓬莱市| 衡山县| 江口县| 拉孜县| 黔东| 台北市| 顺义区| 彭阳县| 西昌市| 五家渠市| 大名县| 滨州市| 清水河县| 通海县| 称多县| 鹿泉市| 准格尔旗| 桐庐县| 广东省| 青州市| 浮山县| 仙游县| 长子县| 营口市| 广德县| 贺兰县| 井陉县|