成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 詳解html5 canvas 微信海報分享(個人爬坑)

詳解html5 canvas 微信海報分享(個人爬坑)

熱門標簽:云南大理400電話申請官方 當涂高德地圖標注 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 江蘇智能電銷機器人哪家好 黃島區(qū)地圖標注 電銷機器人電話用什么卡 四川點撥外呼系統(tǒng) 成都智能外呼系統(tǒng)平臺 南寧點撥外呼系統(tǒng)哪家公司做的好

本文介紹了canvas 微信海報分享,分享給大家,具體如下:

  1. 隨機產(chǎn)生一張圖片
  2. 拿到微信用戶的頭像和稱呢(自己調(diào)后端的接口獲?。?/li>
  3. 把用戶頭像和稱呢和隨機產(chǎn)生一張圖片合成一張海報
  4. 可能上一頁用戶還有填入的心愿文本也要填入圖片中

實現(xiàn)效果圖

記錄下在實現(xiàn)功能過程中遇到的問題

  1. canvas在微信瀏覽器中長按無效不能像img一樣長按分享(那我就轉(zhuǎn)成img唄)
  2. 轉(zhuǎn)成img后在微信開發(fā)者工具中能顯示,真機無效(欲哭無淚),度娘說可能是圖片跨域^-^
  3. 用戶頭像合成還要圓角,我表示不會啊,直接看canvas api文檔了對度娘無愛了
  4. canvas填入文字超過指定寬度也要換行,我表示只知道不超多指定寬度的各種文字對齊方式 ctx.textAlign = 'center' ;
  5. canvas在高清屏下模糊的問題(超簡單的不知道度娘怎么會那么啰嗦)不就是canvas.witdt=innerWidth*devicePixelRatio

HTML結(jié)構(gòu)

<div class="imgBox" v-cloak>
    <img :src='imgSrc' v-if="imgSrc" />
</div>

CSS

<style>
    *{
        margin:0;
        padding:0;
    }
    body,
    html {
        width: 100%;
        height: 100%;
    }

    .imgBox {
        width: 100%;
        height: 100%;

    }

    img {
        width: 100%;
        display: block;
    }
</style>

script

// js主要結(jié)構(gòu)
new Vue({
    el:'imgBox',
    data:{
        urlParam: {},//獲取url中的傳值對象
        randomNum: 1,//隨機數(shù)用于確定那個祈福頁
        userName: '',//用戶稱呢
        imgSrc: '',//合成最終圖片
        userImg: '',//用戶頭像圖片
        userMessage: '',//用戶留言
    },
    methods: {
        // 分享到盆友圈
        wxShareFriends: function () {},
        // 初始化請求頭
        wxHttp: function () {
            $.ajaxSetup({
                headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
        },
        // 獲取隨機數(shù)[1,10]
        randomNumbers() {
            this.randomNum = Math.ceil(Math.random() * 10)
        },
        // 獲取微信用戶頭像和稱呢和用戶輸入祝福語
        getUserInfo() {
            var vm = this;
            $.post('API請求地址', function (data) {
                if (data.code == 1) {
                    vm.userImg = data.data.headimg;
                    vm.userName = data.data.nickname;
                    if (vm.randomNum % 2 == 0) {
                        vm.userMessage= '紅塵相遇,年華已老。歲月花開多少不在,古往今來相遇是一件既微妙。而又神圣的事情,紅塵的情網(wǎng)中'
                    } else {
                        vm.userMessage = '紅塵相遇,年華已老'
                    }
                }
                vm.$nextTick(function () {
                    vm.drawCanvasBgImg();
                })
            })
        },
        // 獲取頁面dpr和寬度
        getWindowInfo() {
            var windowInfo = {};
            windowInfo.dpr = window.devicePixelRatio;
            if (window.innerWidth) {
                windowInfo.width = window.innerWidth;
            }
            else {
                windowInfo.width = document.body.clientWidth;
            }
            return windowInfo;
        },
        // 畫活動頁分享背景大圖
        drawCanvasBgImg () {},
        // 在背景圖片的畫布上截取一個圓然后填充入用戶頭像
        drawCanvasUserImg(canvas, ctx, dpr) {},
        // 填寫用戶稱呢或者用戶留言
        canvasFillText (canvas, ctx, dpr, circleR) {},
        // 合成base64位分享圖
        convertCanvasToImage (canvas) {
            this.imgSrc = canvas.toDataURL("image/jpeg");//png有毒在安卓機下識別二維碼無法跳轉(zhuǎn)
            this.$Spin.hide();
        }
    }
})

畫圖方法步驟

  1. drawCanvasBgImg ()
  2. drawCanvasUserImg (canvas, ctx, dpr)
  3. canvasFillText (canvas, ctx, dpr, circleR)
  4. convertCanvasToImage (canvas)

畫活動頁分享背景大圖 drawCanvasBgImg ()

//拿到數(shù)據(jù)后開始畫背景大圖 想法很簡單就是把圖片畫到canvas中然后在畫布上再畫頭像文字讓后轉(zhuǎn)成img
 drawCanvasBgImg () {
    var vm = this;
    var canvas = document.createElement("canvas");
    var ctx = canvas.getContext("2d");
    var clientWidth = this.getWindowInfo().width;  //獲取屏幕寬度用于canvas寬度自適應移動端屏幕
    var dpr = this.getWindowInfo().dpr;
    ctx.globalCompositeOperation = "source-atop";//** 坑鋸齒感覺沒什么用不知道是不是用錯地方了 **
    canvas.width = dpr * clientWidth;  //由于手機屏幕時retina屏,都會多倍渲染,用dpr來動態(tài)設置畫布寬高,避免圖片模糊
    canvas.height = dpr * clientWidth * 609 / 375;//去掉微信頭部的狀態(tài)欄應該是603 沒搞懂603還是不能讓圖片滿屏直接多加到了609
    var img = new Image();
    img.crossOrigin = '';//死坑的圖片跨域 (img.crossOrigin = "Anonymous"這種寫法還是不能顯示base64格式圖片)
    img.src = "http://xxx" + this.randomNum + ".jpg";
    img.onload = function () {
        ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
        vm.drawCanvasUserImg(canvas, ctx, dpr);
    }
},

用戶頭像 drawCanvasUserImg (canvas, ctx, dpr)

// 在背景圖片的畫布上截取一個圓然后填充入用戶頭像
drawCanvasUserImg: function (canvas, ctx, dpr) {
    var vm = this;
    var circleR = 50 * dpr;//半徑
    var circleX = canvas.width / 2;//圓心X坐標
    var circleY = 50 * dpr;//圓心Y坐標
    var imgX = circleX - circleR;//圖片X開始坐標
    var imgY = circleY - circleR;//圖片Y開始坐標
    var imgWidth = 2 * circleR;//圖片按圓形大小
    var img = new Image();
    img.crossOrigin = '';
    img.src = this.userImg;
    img.onload = function () {
        ctx.save(); // 保存當前ctx的狀態(tài)
        ctx.arc(circleX, circleY, circleR, 0, 2 * Math.PI); //畫出圓
        ctx.clip(); //裁剪上面的圓形
        ctx.drawImage(img, imgX, imgY, imgWidth, imgWidth); // 在剛剛裁剪的園上畫圖
        ctx.restore(); // 還原狀態(tài)
        vm.canvasFillText(canvas, ctx, dpr, circleR);
    }
},

在canvas中畫文字

// 填寫用戶稱呢或者用戶留言
canvasFillText (canvas, ctx, dpr, circleR) {
    var fontSizeThis = dpr * 20 + 'px' + ' Arial';
    var userNameY = 0;//用戶名Y軸坐標
    var userMessageX = dpr * 40;//用戶留言X軸坐標
    var userMessageY = 0;//用戶留言Y軸坐標
    var lastSubStrIndex = 0;//字符串下標
    var lineWidth = 0;//一行寬度
    var allTextWidth = 0;//所有字符寬度
    ctx.font = fontSizeThis;
    // 需要用戶名是寫入用戶名
    if (this.userName) {
        userNameY = circleR * 2.5;
        ctx.fillStyle = "#0094ff";
        ctx.textAlign = 'center';
        ctx.fillText(this.userName, canvas.width / 2, userNameY);
    }
    if (this.userMessage) {
        userMessageY = userNameY + dpr * 35;
        ctx.fillStyle = "#000";
        // 獲取字符寬度
        for (var i = 0; i < this.userMessage.length; i++) {
            allTextWidth += ctx.measureText(this.userMessage[i]).width;
        }
        // 字符串長度大于畫布區(qū)域要換行
        if (allTextWidth > canvas.width - 2* userMessageX) {
            for (var i = 0; i < this.userMessage.length; i++) {
                lineWidth += ctx.measureText(this.userMessage[i]).width;
                if (lineWidth > canvas.width - 2*userMessageX) {
                    ctx.textAlign = 'left';
                    ctx.fillText(this.userMessage.substring(lastSubStrIndex, i), userMessageX, userMessageY);
                    userMessageY += dpr * 25;//設置行高
                    lineWidth = 0;
                    lastSubStrIndex = i;
                }
                if (i == this.userMessage.length - 1) {
                    ctx.fillText(this.userMessage.substring(lastSubStrIndex, i + 1), userMessageX, userMessageY);
                }
            }
        } else {
            // 小于者居中顯示
            ctx.textAlign = 'center';
            ctx.fillText(this.userMessage, canvas.width / 2, userMessageY);
        }
    }
    this.convertCanvasToImage(canvas);
},

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:廣西 西寧 十堰 淮安 咸寧 南京 佳木斯 酒泉

巨人網(wǎng)絡通訊聲明:本文標題《詳解html5 canvas 微信海報分享(個人爬坑)》,本文關鍵詞  詳解,html5,canvas,微信,海報,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解html5 canvas 微信海報分享(個人爬坑)》相關的同類信息!
  • 本頁收集關于詳解html5 canvas 微信海報分享(個人爬坑)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    超碰在线公开| 亚洲一区中文在线| 日韩欧美综合视频| 免费av在线播放| 久久视频在线直播| 日本大胆欧美人术艺术动态| 亚洲在线观看视频网站| 欧美精品在线一区二区三区| 精品视频偷偷看在线观看| 免费日本黄色网址| 中文字幕一二三区| 在线精品亚洲欧美日韩国产| 国产精品无圣光一区二区| 中国黄色片免费看| 久久久久一本一区二区青青蜜月| 亚洲最新视频在线| 中文字幕亚洲天堂| 国产精品美女久久久| 久久免费手机视频| 国产精品爱久久久久久久| 日韩av成人在线| 日韩中文字幕欧美| 中文字幕电影av| 久久国产柳州莫菁门| 天天操精品视频| 日本xxxx裸体xxxx| 伊人午夜电影| 一精品久久久| 婷婷精品在线观看| 日产精品久久久| 国产精品第二页| 免费男女羞羞的视频网站中文字幕妖精视频| 日韩高清一区| a级免费观看| 天天射狠狠干| 北岛玲heyzo一区二区| 欧美日韩国产123区| 999久久久久久| 国产精品沙发午睡系列990531| 中日韩精品视频在线观看| 中文av一区二区三区| 欧美色图亚洲视频| 久久蜜桃精品| 激情久久一区二区| 久久精品99久久久久久| 中文字幕在线永久| 狂野欧美性猛交xxxx巴西| 中文字幕国产精品| 成人免费福利片| 亚洲成人网在线| 蜜桃在线一区二区| 国产精品2023| 成人av午夜电影| 欧美色视频在线观看| 国产乱码午夜在线视频| 欧美一区二区三区免费视频| 99www免费人成精品| 久久久久99人妻一区二区三区| 中文字幕久热精品在线视频| 欧美18—19sex性hd| 亚州色图欧美色图| 日本黄色精品| 第一页在线观看| 中文字幕影音先锋| 一色屋免费视频| 9.1成人看片| 国产精品高潮呻吟视频| 日韩美女久久久| 色综合亚洲图丝熟| 日韩一区二区三区四区区区| 亚洲色图美腿丝袜| 久久精品中文字幕一区| 播放一区二区| 369你懂的电影天堂| 性猛交╳xxx乱大交| 日韩激情一区二区| 亚洲欧洲在线观看| 午夜一级免费视频| 国产一级片免费| 92国产精品| 橘梨纱av一区二区三区在线观看| 免费无码av片在线观看| 手机在线看福利| 97超碰国产精品女人人人爽| 国产精品久久久久久久久久久久| 欧美高清另类hdvideosexjaⅴ| 日韩av懂色| av亚洲男人天堂| 综合伊人久久| 欧美淫片网站| 在线看的毛片| 涩涩视频在线观看| 成人黄色在线视频| 国产高清久久久| 成人福利片在线| 好吊色免费视频| 亚洲一区av在线播放| 久久久久久久有限公司| 亚洲成色www.777999| 中文字幕乱码亚洲无线精品一区| 男女视频免费网站| www.99精品| 国产无遮挡又黄又爽又色视频| 久久中文视频| 国产视频一区免费看| 999精品视频在这里| 久久一日本道色综合久久| 日韩欧美福利视频| 国产卡一卡2卡三卡免费视频| 风流少妇一区二区三区91| 色老板在线视频| 日韩影院精彩在线| 国产福利av网站| 中文欧美在线视频| 国模套图日韩精品一区二区| 日韩视频网站在线观看| 黄色国产网站在线播放| 亚洲精品乱码久久久久久日本蜜臀| 亚洲国产精品嫩草影院久久| 国产日韩中文字幕在线| 美女视频一区二区三区在线| 四虎精品一区二区免费| av无码久久久久久不卡网站| 久久一区二区三区电影| 男人的天堂在线视频免费观看| 免费视频一区二区| 日韩欧美在线视频观看| 91美女高潮出水| 国产精品777777在线播放| 2023国产在线观看| 国产午夜精品一区理论片| 黄色一级片播放| 狠狠色狠狠色综合日日tαg| 国产精品亚洲综合天堂夜夜| 爱情岛论坛亚洲入口| 3d蒂法精品啪啪一区二区免费| 一区二区三区|亚洲午夜| 91popny丨九色丨国产| 四虎精品一区二区三区| 久久久久久久久久国产精品| 国产香蕉尹人视频在线| 国产成+人+综合+亚洲欧美丁香花| 国产精品第3页| 国产亚洲成人精品| 亚洲精品免费视频| 国产1区2区视频| 亚洲福利国产精品| 国产精品一区二区三区四区五区| 亚洲熟妇无码乱子av电影| 久久免费高清视频| 亚洲国产三级| 国产精品麻豆一区| 日韩视频一区二区在线观看| 麻豆影视在线| 久久99偷拍| 2021狠狠干| 亚洲日本视频| 91精品国产综合久久香蕉的特点| 日韩精品一区第一页| 在线成人国产| 国产亚洲精品码| 亚洲黄色小说图片| 综合色一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 色97色成人| 欧美交换国产一区内射| 国产一级二级三级视频| 国产精品 欧美在线| 欧美日韩 一区二区三区| 日本福利一区| vam成人资源在线观看| 亚洲欧美成人一区二区在线电影| av伊人久久| 毛片大全在线观看| 成人黄色一区二区| 午夜伦欧美伦电影理论片| 人人妻人人澡人人爽精品欧美一区| 无遮挡又色又刺激的女人视频| 国产福利电影在线观看| 国产精品欧美经典| www.亚洲天堂网| 日本免费在线视频不卡一不卡二| 国产精品三级美女白浆呻吟| 国语对白中文字幕| 成年人在线看片| 国产精品一区二区在线观看网站| 欧美网站一区二区| 九九综合九九综合| 亚洲女与黑人做爰| 欧美日韩久久久久| 91福利在线看| 91九色对白| 999久久久国产999久久久| 国产午夜精品一区二区三区| 久久99久久99精品| 日本一二三视频| 亚洲高清在线观看| 中文字幕一区二区三区四区久久| 国产区精品视频在线观看豆花| 欧美午夜一区二区三区| 你懂的网站在线播放| www.天天干.com| 欧美精品久久96人妻无码| aaa在线视频| 男人透女人免费视频| 日本精品久久| 欧美日韩国产一级二级| 黄色一级大片在线免费看产| 欧美wwwxxxx| 亚洲h精品动漫在线观看| 亚洲黄色在线免费观看| 日韩电影一区二区三区| 午夜久久久久久电影| 国产一区二区三区观看| 欧美二三四区| 青草影院在线观看| 国产999精品| 婷婷久久综合九色综合99蜜桃| 黄色一级片在线| 91porny在线| 五月天综合网站| 国产一区二区三区高清播放| 国产一区二区三区免费看| av先锋影院| 欧美肉大捧一进一出免费视频| 亚洲1024| 国产精品亚洲一区二区在线观看| 欧美精品丝袜久久久中文字幕| 91影院在线观看| 992在线观看| 疯狂试爱三2浴室激情视频| 日韩精品在线播放| 国产原创在线播放| 噜噜噜在线视频| 国产韩国精品一区二区三区| 午夜久久久久久久久| 户外极限露出调教在线视频| 中文字幕成人在线观看| 成熟了的熟妇毛茸茸| 青青草国产一区二区三区| 精品久久在线播放| 国产福利小视频在线观看| 不卡免费追剧大全电视剧网站| 国产精品免费一区二区三区观看| 日韩欧美高清在线播放| 四虎影视2018在线播放alocalhost| 成人在线爆射| 国产91在线免费观看| 成人黄色大片在线免费观看| 青娱乐91视频| 高清福利在线观看| 国产91av视频在线观看| 九九热精品在线视频| 好久没做在线观看| 久久精品国产99| 欧美自拍偷拍一区二区| yellow在线观看网址| 日韩精品不卡| 91美女片黄在线观看91美女| 91麻豆国产精品久久| 久久成人18免费观看| 91嫩草国产在线观看| 亚洲视频一区二区三区四区| 国产精品一区二区x88av| 蜜桃久久影院| 国产口爆吞精一区二区| 免费国产成人av| аⅴ资源天堂资源库在线| 黄色一级片免费看| 精品视频在线一区| 视频国产一区| 欧美特黄a级高清免费大片a级| 亚洲国产日韩在线一区| 精品视频高潮| 国产永久免费| 亚洲精品国产精品国产| videos性欧美另类高清| 性中国xxx极品hd| 亚洲制服欧美另类| 国产精品无码永久免费888| 精品人妻一区二区三区日产乱码| 亚洲卡通动漫在线| 亚洲aⅴ优女av综合久久久| 亚洲美女精品视频| 亚洲热线99精品视频| 丁香社区五月天| 久久亚洲AV无码专区成人国产| 69久久99精品久久久久婷婷| 欧美另类bbbxxxxx另类| 中文字幕一区二区三区欧美日韩| 日本在线免费看| 欧美一二三区在线观看| 国内精品久久久久久久果冻传媒| 日本熟妇人妻中出| 98视频精品全部国产| 电影在线观看一区| 男人天堂欧美日韩| 欧美挤奶吃奶水xxxxx| 日本色护士高潮视频在线观看| 亚洲欧美日韩国产成人精品影院| 丰满女人性猛交| 91精品国产麻豆国产在线观看| 亚洲经典视频在线观看| av手机天堂| 欧美一区二区三区免费看| 欧美激情 亚洲a∨综合| 成人看片黄a免费看视频| www.综合色| 国产成人综合在线| 男人精品网站一区二区三区| 亚洲精品中文在线观看| 日本一区二区三区四区高清视频| 欧美一区激情视频在线观看| 色婷婷一区二区三区在线观看| 日韩a在线观看| 99国产精品99| 国精产品一区一区三区视频| 欧美日韩国产影院| 黄色工厂这里只有精品| 免费av片风间由美在线| 久久中文字幕av一区二区不卡| 国产成人精品亚洲男人的天堂| 电影亚洲一区| 国产精品夫妻自拍| 欧美做爰啪啪xxxⅹ性| 国产乱色精品成人免费视频| 自拍亚洲一区| 国产一区二区三区精彩视频|