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 }
愿时光为我加冕
原文地址:https://www.cnblogs.com/taishuhanmei/p/9084495.html