canvas合成图片

canvas合成图片

//图片合成
function draw(dom){
    try{
    var data1= new Array();
    data1[0] = dom.find('.doodle').attr('src');
    data1[1] = dom.find('.frame').attr('src');
    var frameImg = dom.find('.frame');
    var show=dom.find('.show');

    var frameSize = new Image;
    frameSize.src = data1[1];
    frameSize.width = frameSize.width*0.2;
    frameSize.height = frameSize.height*0.2;
    var c=document.createElement('canvas'),
        ctx=c.getContext('2d'),
        len=data1.length;
    c.width=frameSize.width;
    c.height=frameSize.height;
    ctx.rect(0,0,c.width,c.height);
    ctx.fillStyle='#FFFFFF';//画布填充颜色
    ctx.fill();
    function drawing(n){
        if(n<len){
            var img=new Image;
            img.setAttribute('crossOrigin', 'anonymous'); 
//图片地址域名要和页面的地址域名相同(不同的域名要设置CORS跨域配置)
            img.src=data1[n];
            img.onload=function(){
                if(n==0){
                    //缩小涂鸦
                    zoom(frameSize,img,0.85);
                }else{
                    zoom(frameSize,img,1);
                }
                ctx.drawImage(img,(frameSize.width-img.width)/2,(frameSize.height-img.height)/2,img.width,img.height);
                drawing(n+1);递归
            }
        }else{
            //保存生成作品图片
            show.attr('src',c.toDataURL("image/png"));
        }
    }
    drawing(0);
    }
    catch (e){
        alert(e.name + ": " + e.message);
    }
}

//缩放图片
function zoom(frameImg,img,scale){
var sx = frameImg.width*scale/img.width;
var sy = frameImg.height*scale/img.height;
if(sx > sy){
    sx = sy;
    img.width = sx*img.width;
    img.height = sy*img.height;
}else{
    sy = sx;
    img.width = sx*img.width;
    img.height = sy*img.height;
}
}   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值