vue2.0截图 html2canvas or dom-to-image 并解决openlayers截图空白问题

1.版本

1
2
3
"dom-to-image": "^2.6.0",
// or
"html2canvas": "^1.4.1",

2.引入

import domtoimage from 'dom-to-image';
// or
import html2canvas from 'html2canvas';

3.dom结构

<div ref="screenshotsImgElem"></div>

<el-button @click="screenshotsHandler">截图</el-button>

4.调用

复制代码
/** 截屏按钮操作 */
        screenshotsHandler() {
            domtoimage.toPng(this.$refs.screenshotsImgElem).then( (dataUrl) => {
                console.log('dataUrl :>> ', dataUrl);
                // 第一步:将dataUrl转换成Blob
                const blob = this.base64ToBlob(dataUrl);
                // 第二步:上传
                this.uploadShareImg(blob,'domtoimage');
            })
            .catch(function (error) {
                console.error('oops, something went wrong!', error);
            });
},
复制代码

or

复制代码
        /** 截屏按钮操作 */
        screenshotsHandler() {
              html2canvas(this.$refs.screenshotsImgElem, {
                    useCORS: true,  // 如果截图的内容里有图片,可能会有跨域的情况,加上这个参数,解决文件跨域问题
                })
                .then(canvas => {
                    const dataUrl = canvas.toDataURL('images/jpg');
                    console.log('dataUrl :>> ', dataUrl);
                    // 第一步:将dataUrl转换成Blob
                    const blob = this.base64ToBlob(dataUrl);
                    // 第二步:上传
                    this.uploadShareImg(blob,'html2canvas');
                })
            
        },
复制代码

5.base64转blob

js base64转blob

6.解决openlayers截图空白问题

  引入天地图图层导致空白问题解决方式:

  

var tilesource = new XYZ({
    url: 'http://***',
    // !设置crossOrigin, 解决截图空白问题
    crossOrigin: 'anonymous',
});

 

posted @   Deer_Lin  阅读(962)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示