在vue頁面成功實現了截圖在此做一記錄


在前端的vue頁面實現最簡單的截圖:

第一步安裝html2canvas組件:

npm install html2canvas --save

第二步導入頁面:

import html2canvas from'html2canvas'

第三步定義自我截圖調用的方法(例如的方法為barPhoto):那你需要截圖你調用此方法就行

private barPhoto() {
  //指定在500毫秒后執行toImage
    setTimeout(this.toImage, 500);
  }
第四步定義頁面元素轉換圖片的方法:
 
private toImage() {
    // 第一個參數是需要生成截圖的元素,第二個是自己需要配置的參數,寬高等
    html2canvas(this.$refs.imageTofile, {
      backgroundColor: null,
      useCORS: true // 如果截圖的內容里有圖片,可能會有跨域的情況,加上這個參數,解決文件跨域問題
    }).then(canvas => {
      let url = canvas.toDataURL("image/png");
      this.htmlUrl = url;
      // 把生成的base64位圖片上傳到服務器,生成在線圖片地址
      this.sendUrl();
    });
  }


第五步圖片上傳服務器:

private sendUrl() {
    // 如果圖片需要formData格式,就自己組裝一下,主要看后台需要什么參數
    const formData = new FormData();
    formData.append("base64", this.company.fileUrl);
    formData.append("userId", 123);
    formData.append("pathName", "pdf");
    this.$ajax({
      url: apiPath.common.uploadBase,
      method: "post",
      data: formData
    }).then(res => {
      if (res.code && res.data) {
        return;
      }
    });
  }

第六步頁面div標簽的內容:

在你想要截取內容的div標簽里加上 ref="imageTofile",

接着就是你想要展示截圖效果的div標簽:

<div>
      <img
        style="width: 100%;height: 100%;"
        class="real_pic"
        :src="htmlUrl"
        crossorigin="anonymous"
      />
    </div>

附加內容:

如果你想下載剛才的截圖:


第一步:有一個點擊下載的標簽:

<div class="download" @click="downloadCodeImg">點擊下載</div>
第二步:調用方法即可:
//下載圖片
  private downloadCodeImg() {
    console.log("下載圖片");
    var a = document.createElement("a");
    a.download = name ||"圖片"; // 設置圖片地址
    a.href = this.htmlUrl;
    a.click();
  }

完美的結局總是很少,上述截圖步驟少了htmlUrl的定義了:private htmlUrl: string = "";

此方法可能存在很多不足ps(我用來截超圖地圖就沒成功!)應該可以滿足一些簡單的截圖了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM