vue实现截图功能

本文介绍了如何在Vue项目中利用html2canvas库实现网页截图的功能。首先通过npm安装html2canvas,然后在组件中引入并配置相关参数。在template部分展示vue-qr组件,并在scripts部分定义setImage方法,该方法用于创建canvas元素,设置其大小以防止模糊,调用html2canvas将指定元素转化为canvas,再将canvas转换为blob对象,最后进行文件上传操作。

1、安装

npm install html2canvas --save

2、引入

import html2canvas from ‘html2canvas’

3、template:

<vue-qr

:text=“downloadData.url”

:margin=“0”

colorDark="#000"

colorLight="#fff"

:logoSrc=“downloadData.icon”

:logoScale=“0.3”

:size=“200”>

4、scripts:

// 截取图片

setImage () {

let that = this;

var canvas2 = document.createElement(“canvas”);

// let _canvas = document.getElementById(‘child’);

let _canvas = document.getElementById(‘nodeBox’);

var w = parseInt(window.getComputedStyle(_canvas).width);

var h = parseInt(window.getComputedStyle(_canvas).height);

//将canvas画布放大若干倍,然后盛放在较小的容器内,就显得不模糊了

canvas2.width = w * 4;

canvas2.height = h * 4;

canvas2.style.width = w + “px”;

canvas2.style.height = h + “px”;

//可以按照自己的需求,对context的参数修改,translate指的是偏移量

var context = canvas2.getContext(“2d”);

context.scale(2, 2);

html2canvas(document.getElementById(‘nodeBox’), {

canvas: canvas2

}).then(function (canvas) {

var blob = that.getBlob(canvas);

var oMyForm = new FormData();

var fileName = “mobile” + ‘.jpg’

oMyForm.append(“file”, blob, fileName);

// oMyForm.append(“fileName”, fileName);

oMyForm.append(“fileType”, ‘image’);

oMyForm.append(“user_id”, that)

});

},

getBlob (canvas) { //获取blob对象

var data = canvas.toDataURL(“image/jpeg”, 1);

this.dataurl=data

console.log(this.dataurl)

data = data.split(’,’)[1];

data = window.atob(data);

var ia = new Uint8Array(data.length);

for (var i = 0; i < data.length; i++) {

ia[i] = data.charCodeAt(i);

}

return new Blob([ia], {

type: “image/jpeg”

});

},

5、应用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值