• 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 }
    愿时光为我加冕
  • 相关阅读:
    利用FlashPaper实现类似百度文库功能
    浅谈Oracle函数返回Table集合
    Oracle 触发器在日志管理开发中的应用
    Putty 工具 保存配置的 小技巧
    java.util.Date转java.sql.Date丢失时间问题
    java String和Date转换
    springboot项目使用拦截器修改/添加前端传输到后台header和cookie参数
    Spring的使用及Spring3.2控制器增强@ControllerAdvice
    使用fastjson统一序列化响应格式
    【转】Elastic-Job
  • 原文地址:https://www.cnblogs.com/taishuhanmei/p/9084495.html
Copyright © 2020-2023  润新知