zoukankan      html  css  js  c++  java
  • 移动端保存当前屏幕内容为图片,canvas图片拼接

    需求:1、移动端点击分享时,截屏当前屏幕,并保存为图片  2、将截屏的图片与一张二维码图片进行拼接后,生成一张新的图片

    技术栈:html2canvas.js、canvas2image.js

    代码:(jquery和原生js混写了,不是很规范)

    <script type="text/javascript">
      //获取页面中的分享按钮
      var sharebtn = document.querySelectorAll('.share');
        for(let i=0;i<sharebtn.length;i++){
            //给分享按钮添加touch事件
            sharebtn[i].ontouchend = function(){
                //html2canvas语法,截取当前屏幕h5转为canvas
              html2canvas(document.body).then(canvas => {
                    document.body.appendChild(canvas);
                    var canvasbox = document.getElementsByTagName('canvas')[0];
                  var w = canvasbox.width,h = canvasbox.height;
                  //canvas转化为图片并添加到body中,以便于第二次图片拼接时获取该图片
                    var img = Canvas2Image.convertToPNG(canvas, w, h);
                    img.id = 'img1';
                    document.body.appendChild(img)
                    
                    //创建新画布并添加到body中
                    var canvasel = document.createElement('canvas');
                    canvasel.id = 'mycanvas';
                    canvasel.width = 750;
                    canvasel.height = 1654;
                    document.body.appendChild(canvasel);
                    
                    //当截屏的图片加载完成后,执行该方法
                    img.onload = function(){
                        //获取新画布
                        var mycanvas = document.getElementsByTagName('canvas')[1];
                       var w = mycanvas.width,h = mycanvas.height;
                        var ctx = mycanvas.getContext('2d');
                        //创建需要拼接的二维码图片
                        var lastimg = new Image();
                        lastimg.src='image/ewm.png';
                        //获取截屏的图片
                        var img1 = document.getElementById('img1');
                        //当二维码图片加载完成后执行:
                        lastimg.onload = function(){
                            //在新的canvas中绘制两张图片并将该canvas转化为图片
                            ctx.drawImage(img1,0,0);
                            ctx.drawImage(lastimg,0,1334);
                            var newimg = Canvas2Image.convertToPNG(mycanvas,w,h);
                            //将图片添加到页面的结构中 并显示该结构
                            document.getElementById('imgbox').appendChild(newimg);
                            $('.img-show-wrap').removeClass('hide');
                            $('.mask').removeClass('hide');
                        }
                    }
              })
              }
        }
      </script>
  • 相关阅读:
    js··事件捕捉
    js中的Call()和apply()
    什么是变量提升?
    什么是作用域? 什么是作用域链?
    什么是原型链?
    js中this是什么?
    Js高级 事件冒泡
    Js高级 事件 对象
    Js高级 部分内容 面向对象
    工作期间的策划案总结(1)
  • 原文地址:https://www.cnblogs.com/javascripter/p/12190423.html
Copyright © 2011-2022 走看看