1. 程式人生 > >利用canvas將網頁元素生成圖片並儲存在本地

利用canvas將網頁元素生成圖片並儲存在本地

利用canvas將網頁元素生成圖片並儲存在本地


   首先引入三個檔案:
        1、<script type="text/javascript" src="js/html2canvas.js"></script> 
        2、<script type="text/javascript" src="js/base64.js"></script>
        3、<script type="text/javascript" src="js/canvas2image.js"></script>

<div style="background-color: red; width: 700px; height: 500px;">
 //canvas截圖為document.body上的元素
  html2canvas(document.body).then(function (canvas) {   
      canvas.setAttribute('id','canvasImg');  //給canvas新增id
      // document.body.appendChild(canvas)
      document.getElementById('images').appendChild(canvas)   //新增canvas圖給元素
  });
    let Download=document.getElementById('Download');
   Download.onclick=function () {     //給下載節點繫結事件
       let oCanvas=document.getElementById('canvasImg');  //獲取canvas的id
       console.log(oCanvas)
       // 將canvas圖片通過Canvas2Image轉成的img元素引入的圖片
       let img=Canvas2Image.saveAsJPEG(oCanvas,true).getAttribute('src');
       console.log(img);
       saveFile(img,'hlr.png')   //呼叫下載函式,傳Canvas2Image圖片地址,下載時儲存的圖片的名稱
   };

注:createElementNS() 方法可建立帶有指定名稱空間的元素節點。 createElementNS(ns,name)
createElementNS() 方法與 createElement() 方法相似,只是它建立的 Element
節點除了具有指定的名稱外,
還具有指定的名稱空間。只有使用名稱空間的 XML 文件才會使用該方法。


let saveFile=function (data,filename) {
    let save_link=document.createElementNS('http://www.w3.org/1999/xhtml','a');  //img表示生成img元素或a元素或則可以放圖片地址的元素

    save_link.href=data;              //img  元素中圖片引入用src,a元素中圖片的引入用href等等
    save_link.download=filename;    // 下載的名稱
    var event = document.createEvent('MouseEvents');//建立event事件
    console.log(event);
    //initMouseEvent 方法用於初始化通過 DocumentEvent 介面建立的 MouseEvent 的值, 詳見下文:
    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    save_link.dispatchEvent(event);

    console.log(save_link)// <a href=data:image/jpeg:base64.....></a>
}

initMouseEvent 方法用於初始化通過 DocumentEvent 介面建立的 MouseEvent 的值。
此方法只能在通過 dispatchEvent 方法指派 MouseEvent 之前呼叫,
儘管在該階段可以多次呼叫它(如有必要)。如果被多次呼叫,則最後一次呼叫優先。

  • 其他指定事件方法:

    typeArg - 指定事件型別。
    canBubbleArg - 指定該事件是否可以 bubble。
    cancelableArg - 指定是否可以阻止事件的預設操作
    viewArg - 指定 Event 的 AbstractView。
    detailArg - 指定 Event 的滑鼠單擊量。
    screenXArg - 指定 Event 的螢幕 x 座標
    screenYArg - 指定 Event 的螢幕 y 座標
    clientXArg - 指定 Event 的客戶機 x 座標
    clientYArg - 指定 Event 的客戶機 y 座標
    ctrlKeyArg - 指定是否在 Event 期間按下 control 鍵
    altKeyArg - 指定是否在 Event 期間按下 alt 鍵。
    shiftKeyArg - 指定是否在 Event 期間按下 shift 鍵。
    metaKeyArg - 指定是否在 Event 期間按下 meta 鍵。
    buttonArg - 指定 Event 的滑鼠按鍵。
    relatedTargetArg - 指定 Event 的相關 EventTarget。

在這裡插入圖片描述
更多內容自己去檢視canvas API.

來源:看了一篇部落格,實驗出來的,忘了地址了,哈哈

來源:https://blog.csdn.net/qq_34171965/article/details/84956510