HTML转Canvas工具 前端生成图片工具 屏幕快照 html2canvas 下载 或上传至服务器 使用方法

HTML转Canvas工具 前端生成图片工具
屏幕快照 html2canvas 下载 或上传至服务器 使用方法

 <!-- 如果需要显示照片-->
  <!-- <img :src="htmlUrl"> -->
<div class="app-container " ref="imageTofile" >
 <!-- 会把这一部分的图截下来 用ref 指引 -->
</div>

<button @click="toImage()">提交</button>
data() {
		return {
		   htmlUrl:''
		}
methods: {
//方法1
		 base64ToBlob (code) {
		                let parts = code.split(';base64,');
		                let contentType = parts[0].split(':')[1];
		                let raw = window.atob(parts[1]);
		                let rawLength = raw.length;
		                let uInt8Array = new Uint8Array(rawLength);
		                for (let i = 0; i < rawLength; ++i) {
		                    uInt8Array[i] = raw.charCodeAt(i);
		                }
		                return new window.Blob([uInt8Array], {type: contentType, name: 'file_' + new Date().getTime() + '.jpg'});
		        },
		        //方法2:
		         toImage() {
					        var self = this;
					    // 第一个参数是需要生成截图的元素,第二个是自己需要配置的参数,宽高等
					    html2canvas(this.$refs.imageTofile, {
					      backgroundColor: null
					    }).then((canvas) => {
					      let dataurl = canvas.toDataURL('image/png');
					            console.log(dataurl)
					              self.htmlUrl = dataurl
					               //以下代码为下载此图片功能
					            //  var triggerDownload = $("<a>").attr("href", dataurl).attr("download", "ceshi.png").appendTo("body");
					            //    triggerDownload[0].click();
					            //    triggerDownload.remove();
					      // 把生成的base64位图片上传到服务器,生成在线图片地址
		
					            let blob = self.base64ToBlob(dataurl);
					            //后台如果不接收base64 就转为file传参
					            let fileOfBlob = new File([blob],'截图.jpg'); // 重命名了
					            console.log('是file文件吗?')
					            console.log(fileOfBlob)
					            let jietufile = {
					                raw:fileOfBlob
					            }
					            self.uploadFileStatus = true;
					            self.fileList.push(jietufile)
					            // console.log(self.fileList)
					            // //调用接口
					            self.saveSupport()
			    })
			  },
			  //调用接口
  saveSupport() {
		      var self = this;
		        var formData = new FormData();
		        formData.append("opinionContent", self.content);
		        if (self.uploadFileStatus && self.fileList.length > 0) {
			          for (var i = 0; i < self.fileList.length; i++) {
				            if (self.fileList[i].raw) {
				              formData.append("uploadFiles", self.fileList[i].raw);
				            }
			          }
		        }
		              
		        html2canvasDemo.saveOpinion(formData).then(res => {
			          if (res && res.code == 200) {
			            self.$message({
			              showClose: true,
			              message: '提交成功',
			              type: 'success',
			              duration: 8000,
			            });
			          } else {
			            self.$message.error('提交失败');
			          }
		        })
			},
	},

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值