• 利用canvas 导出图片


    1、使用canvas绘制图片,并将图片导出。

    在本地直接访问静态网页时,无法使用toDataURL(),需要将网页发布后,canvas才能使用toDataURL获取画布上的内容。因为canvas不允许使用toDataURL来获取异域图片


    原因:将不同域下图片绘制到canvas上时,不能使用toDataURL来获取imgdata,因为 canvas 使用了没有权限的跨域图片在使用canvas.toDataURL()等数据导出函数的时候会报错! img.crossOrigin = "Anonymous" ,它开启了本地的跨域允许。当然服务器存储那边也要开放相应的权限才行,如果是设置了防盗链的图片在服务端就没有相应的权限的话你本地端开启了权限也是没有用的。

    function downloadImg(){
           var a = document.createElement('a');
           a.href = canvas.toDataURL('image/png'); //下载图片
           a.download = '未命名.png'; console.log(a);
           a.click();
       } 
        function drawImg(ctx){
            var img2 = new Image();
            img2.setAttribute('crossOrigin','anonymous');
            img2.src = 'img/1.png';
            img2.onload = function (){
                ctx.drawImage(this,0,0);
               
            }
        }

     绘制跨域图片:

    创建一张图片,设置其跨域属性crossOrigin,将这个临时图片绘制到canvas上
    for(var i=0,len=dyns.length;i<len;i++){
        var dynDiv = dyns[i].getLayerContainer();
        var dynimg = dynDiv.getElementsByTagName('img')[0];
        //dynimg.setAttribute('crossOrigin', 'anonymous');
        //ctx.drawImage(dynimg,0,0,canvas.width,canvas.height); 
        // canvas.toDataURL();  //出错 直接绘制不同域下的图片,无法通过toDataURL获取图片信息
    
        // 重新创建一张图片,设置其跨域属性crossOrigin,将这个临时图片绘制到canvas上,则可以使用toDataURL方法获取其图片内容数据,在生成图片
        var img = new Image();
        img.setAttribute('crossOrigin','anonymous');
        img.src = dynimg.src; 
        img.onload =function (){
            ctx.drawImage(this,0,0,canvas.width,canvas.height);
            canvas.toDataURL();  //成功获取
        };                
    }

    参考:http://segmentfault.com/q/1010000000768672/a-1020000002436172

  • 相关阅读:
    easyui tree 搜索
    easyui combotree不让父级选中
    jquery设置按钮disabled
    JavaScript中清空数组的三种方式
    JavaScript 与 PHP 的语法区别
    URL参数转换对象
    easyui form validate总是返回false原因
    jquery文字填写自动高度
    SQL Server 附加数据库提示5120错误
    jQuery – 鼠标经过(hover)事件的延时处理
  • 原文地址:https://www.cnblogs.com/lydialee/p/4526536.html
Copyright © 2020-2023  润新知