利用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>
 1 <div id="view" style="background-color: red; width: 700px; height: 500px;">
 2 //canvas截圖為document.body上的元素
 3 html2canvas(document.body).then(function (canvas) { 
 4 canvas.setAttribute('id','canvasImg'); //給canvas添加id
 5 // document.body.appendChild(canvas)
 6 document.getElementById('images').appendChild(canvas) //添加canvas圖給元素
 7 });
 8 let Download=document.getElementById('Download');
 9 Download.onclick=function () { //給下載節點綁定事件
10 let oCanvas=document.getElementById('canvasImg'); //獲取canvas的id
11 console.log(oCanvas)
12 // 將canvas圖片通過Canvas2Image轉成的img元素引入的圖片
13 let img=Canvas2Image.saveAsJPEG(oCanvas,true).getAttribute('src');
14 console.log(img);
15 saveFile(img,'hlr.png') //調用下載函數,傳Canvas2Image圖片地址,下載時保存的圖片的名稱
16 };

 

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

 1 let saveFile=function (data,filename) {
 2 let save_link=document.createElementNS('http://www.w3.org/1999/xhtml','a'); //img表示生成img元素或a元素或則可以放圖片地址的元素
 3 
 4 save_link.href=data; //img 元素中圖片引入用src,a元素中圖片的引入用href等等
 5 save_link.download=filename; // 下載的名稱
 6 var event = document.createEvent('MouseEvents');//創建event事件
 7 console.log(event);
 8 //initMouseEvent 方法用於初始化通過 DocumentEvent 接口創建的 MouseEvent 的值, 詳見下文:
 9 event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
10 save_link.dispatchEvent(event);
11 
12 console.log(save_link)// <a href=data:image/jpeg:base64.....></a>
13 }

 

 


> 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。

![在這里插入圖片描述](https://img-blog.csdnimg.cn/2018121115463287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MTcxOTY1,size_16,color_FFFFFF,t_70)
**更多內容自己去查看canvas API.**


來源:看了一篇博客,實驗出來的,忘了地址了,哈哈


免責聲明!

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



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