项目实践 canvas截屏功能

          满屏截图 () {
            // 动态创建画布
            const canvas = document.createElement("canvas");
            // 获取画笔
            const canvasCtx = canvas.getContext('2d');
            // 设置画布宽高
            canvas.width = 200;
            canvas.height = 200;
            // 获取容器的dom 此处以视频为例
            let videoDOM = document.getElementById('video');
            // 在画布上绘制图像
            canvasCtx.drawImage(video, 0, 0, canvas.width, canvas.height);
            canvasCtx.font = '16px 宋体';
            canvas.fillStyle = "#fff";
            canvasCtx.textBaseline = "maddle";
            canvasCtx.textAlign = "right";
            canvasCtx.fillText("时间", canvas.width - 10, canvas.height - 10);
            // 生成截图的base64 toDataURL()方法不能对跨域资源加载
            let imgBase64 = canvas.toDataURL("image/png");
            console.log(imgBase64);
        },
 
        框选截图 () {
            let flag = false;
            let start_X = null; // 开始x坐标
            let start_Y = null; // 开始y坐标
            let end_X = null; // 结束x坐标
            let end_Y = null; // 结束y坐标
            window.scroll(0, 0);
            let canvas = document.createElement("canvas");
            let canvasCtx = canvas.getContext('2d');
            let video = document.getElementById('video');;
            canvas.width = video.offsetWidth;
            canvas.height = video.offsetHeight;
            canvas.width = 660;
            canvas.height = 440;
            canvas.style.position = "absolute";
            canvas.style.top = "0px";
            canvas.style.left = "0px";
            video.parentElement.appendChild(canvas);
            canvas.onmousedown = (e) => {
                if (video) {
                    flag = false;
                    canvas.remove();
                    return;
                } flag = true;
                start_X = e.offsetX;
                start_Y = e.offsetY;
            }
            canvas.onmousemove = (e) => {
                if (!flag) {
                    canvasCtx.clearRect(0, 0, canvas.width, canvas.height);
                    end_X = e.offsetX;
                    end_Y = e.offsetY;
                    // 调用画框函数(start_X,start_Y,end_X,end_Y)
                }
            }
            canvas.onmouseup = (e) => {
                flag = false;
                canvas.onmousemove = null;
                canvas.onmouseup = null;
                end_X = e.offsetX;
                end_Y = e.offsetY;
                canvasCtx.drawImage(video, start_X, start_Y, end_X - start_X, end_Y - start_Y);
                let imgBase64 = canvas.toDataURL("image/png");
                console.log(imgBase64);
                canvas.remove()
            }
        }

最近项目中遇到,需要实现canvas截屏功能,直接上代码。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值