zoukankan      html  css  js  c++  java
  • 利用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

  • 相关阅读:
    25个自适应菜单教程和脚本
    15+最好的视差滚动技术指南
    15个最好的视差滚动教程
    36个创意广告海报欣赏
    26个新鲜有魅力的自适应网站设计实例
    32+激发灵感的HTML5/CSS3网页设计教程
    15+ 易响应的CSS框架快速开启你的敏捷网站项目
    25个令人难忘的广告设计
    15个华丽的wordPress全屏商务主题
    30个精美的美元折纸艺术
  • 原文地址:https://www.cnblogs.com/lydialee/p/4526536.html
Copyright © 2011-2022 走看看