HTML5_圖片base64轉碼后Canvas截圖


  最近做過上傳圖片並截圖的功能。在開發的過程中,由於涉及到圖片跨域的問題,canvas無法成功截取圖片。

  后來在網上查詢了相關資料,了解到需要將圖片轉換成base64編碼的格式,才能成功截取。在簡書中發現了一篇圖片轉換base64編碼的文章,講得比較簡單清晰明了,示例程序也一目了然,雖然不是我想要的,但是值得推薦一下: https://www.jianshu.com/p/90fc1f9042a8

  下面講一下圖片實現base64轉碼后使用html2canvas截圖:

  安裝html2canvas包

npm install --save html2canvas

  js中引入

1 import Html2canvas from "Html2canvas";

獲取base64轉碼后的圖片后,指定給需要獲取的頁面元素

 1 /*
 2      * 將圖片轉換成base64並設置給某個dom元素
 3      */
 4     function getAndSetBase64(imgSrc, domObj){
 5         function getBase64Image(img, domObj, width, height) {
 6             var canvas = document.createElement("canvas");
 7             canvas.width = width ? width : img.width;
 8             canvas.height = height ? height : img.height;
 9 
10             var ctx = canvas.getContext("2d");
11             ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
12             var dataURL = canvas.toDataURL();
13             domObj.src = dataURL;
14         }
15         var image = new Image();
16         image.crossOrigin = '';
17         image.src = imgSrc;
18         if(imgSrc){
19             image.onload = function (){
20                 getBase64Image(image, domObj);
21             }
22         }
23     }

獲取canvas

 1 Html2canvas(document.querySelector("#id")).then(canvas => {
 2                 var shareImg = convertCanvasToImage(canvas);
 3                 shareImg.style.width = '100%';
 4                 shareImg.style.height = '100%';
 5       // 下面是canvas base64路徑  ,img的src可以直接使用這個地址   
6     console.log(encodeURIComponent(shareImg.src.split('base64,')[1]));
7 }); 8 9 function convertCanvasToImage(canvas) { 10 var image = new Image(); 11 image.src = canvas.toDataURL("image/jpg"); 12 return image; 13 }

 


免責聲明!

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



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