微信轉發海報動態生成二維碼和文字標題,併合成一張海報圖

效果展示

 

源碼分享

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
        <title>拍照上傳</title>
        <link rel="stylesheet" href="index.css"/>
        <script type='text/javascript' src='index.js' charset='utf-8'></script>
         <script type='text/javascript' src='jquery-2.1.4.min.js' charset='utf-8'></script>
    </head>
    <style>
        
        body{
    margin: 0
}
.content{
    padding:0.5rem;
    display: flex;
    align-items: center;
    border-bottom: 1px #999 solid
}
.label{
    width:5rem;
}
.img-area{
    flex:1
}
.container{
    background-color:#e7e7e7;
    position: relative;
}
.container div{
    text-align: center;
    padding:0.5rem 0
}
.container input{
    opacity:0;
    filter:alpha(opacity=0);
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 9;
}
.container p{
    font-size: 0.9rem;
    color:#999
}
.btn{
    background-color: #4363ab;
    color: #fff;
    text-align: center;
    padding: 0.5rem 1rem;
    width:80%;
    border-radius: 0.2rem;
    margin: 2rem auto;
    font-weight: 600;
    font-size: 1.2rem
}
     img {
        border: solid 1px #ddd;
     }
    </style>
    <body>
    <div align="center"> 
        <h3>圖片+文字合成一張海報</h3>
        <img src="img/wxmp.jpg" width="300"> 
<!--        <img src="img/bgimg.png" width="110"> -->
        <img src="img/code.png" width="146"> 
        <div style="position: absolute;left: 800px;top: 100px;width: 300px;padding: 10px;border: 1px solid #EEEEEE;">
           <strong>文字:</strong>
           <div style="padding: 10px 0;"></div>
           <div>Tel:18068763980</div>
        </div>
     </div>
     <div id="imgBox" align="center" style="margin: 10px;">
        <button οnclick="hecheng()" id="hc">一鍵合成</button>
     </div>

    </body>
 <script>
            $("#hc").on("click",function(){
                draw(function() {
                    document.getElementById('imgBox').innerHTML = '<p style="padding:10px 0">合成圖片成功!可以鼠標另存圖片查看我是否是一張圖片~~!</p><img src="'+base64[0]+'" width="300">';
                })
            })
            var data = [ 'img/wxmp.jpg', 
                    'img/code.png'], base64 = [];
            var position = [[0,450,184,100,100,100,100],[0,1028,1020,1055,1125,1185,1245]]; //position[0]爲left值,position[1]爲top值(圖片相對位置),依次爲圖片1-圖片3、文字1-文字2
            var size = [[750,180,146,156],[1300,180,190]];//size[0]爲width值,size[1]爲height值(圖片相對大小),依次爲圖片1-圖片3
            var text = ['白領貸','張三','XX農商行','1888888888'];//文字內容
            function draw(fn) {
                var c = document.createElement('canvas'), ctx = c
                        .getContext('2d'), len = data.length;
                //背景圖寬高(第一張爲背景圖)
                c.width = size[0][0];
                c.height = size[1][0];
                ctx.rect(0, 0, c.width, c.height);
                ctx.fillStyle = '#fff';
                ctx.fill();
                function drawing(n) {
                    if (n < len) {
                        var img = new Image;
                        img.src = data[n];
                        if(n==0){
                          img.onload = function() {
                            ctx.drawImage(img, position[0][n], position[1][n], size[0][n], size[1][n]);//(img_name,left,top,width,height)
                            ctx.font="60px microsoft yahei";//設置畫筆的字體大小和格式
                            ctx.fillStyle = "rgba(0,0,0,1)";//設置字體的顏色
//                            ctx.fillText(text[0],position[0][len], position[1][len]);//將文字信息畫在畫布上,按照x,y的座標,在手機上座標不是很準確
                            ctx.fillText(text[0],position[0][len+1], position[1][len+1]);
                            ctx.fillStyle = "#003399"
                            ctx.font="45px microsoft yahei";//設置畫筆的字體大小和格式"
                             ctx.fillText(text[1],position[0][len+2], position[1][len+2]);
                             ctx.fillStyle = "#FF0000"
                             ctx.font="40px microsoft yahei";//設置畫筆的字體大小和格式"
                            ctx.fillText(text[2],position[0][len+3], position[1][len+3]);
                            ctx.fillStyle = "#FF00FF"
                            ctx.font="40px microsoft yahei";//設置畫筆的字體大小和格式"
                            ctx.fillText(text[3],position[0][len+4], position[1][len+4]);
                            drawing(n + 1);//遞歸
                          } 
                        }else if(n==1){
                          img.onload = function() {
                            ctx.drawImage(img, position[0][n], position[1][n], size[0][n], size[1][n]);
                            drawing(n + 1);//遞歸
                          } 
                        }else{
                          img.onload = function() {
                            ctx.drawImage(img, position[0][n], position[1][n], size[0][n], size[1][n]);
                            drawing(n + 1);//遞歸
                          } 
                        }
                        
                    } else {
                        //保存生成作品圖片
                        base64.push(c.toDataURL("image/jpeg", 0.8));
                        //alert(JSON.stringify(base64));
                        fn();
                    }
                }
                drawing(0);
            }
        </script>


</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章