利用canvas合并2张图片,并以图片或base64形式输出

var id1Src=document.getElementById("id_img1"); 
var id2Src=document.getElementById("id_img2");
function getBase64(id1Src,id2Src){
    var _width=parseInt($("#id_img1").width()/2.3);
    var _height=parseInt($("#id_img1").height()/2.3);
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");

    context.drawImage(id1Src, 130, 135, _width, _height);
    context.drawImage(id2Src, 130, 410, _width, _height);
    var newImg = new Image();
    newImg.src = canvas.toDataURL("image/png");

    var _base64=newImg.src.split("base64,")[1];
    return _base64;
}

说明:newImg即为转换出的图片,_base64即为图片的base64值。

-----------------------------------------------------后期发现直接将图片缩小会使照片变的模糊,思考了发现有2个问题:

1.用drawImage的时候缩小照片使照片掉清晰度。2.有些函数应该在照片加载过后才进行,即利用img.onload()。修改后代码如下:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
//获取照片的宽高和照片的src
var _width = parseInt($("#id_img1").width());
var _height = parseInt($("#id_img1").height());
var id1Src = document.getElementById("id_img1");
var id2Src = document.getElementById("id_img2");
//根据图片宽高确定画布大小并画出一个矩形区域
canvas.width=_width*2;
canvas.height=_height*4.5;
context.clearRect(0,0,canvas.width,canvas.height);


var img1=new Image();
img1.src =$("#id_img1").attr("src");
img1.οnlοad=function(){
    //绘画
    context.drawImage(id1Src,0.5*_width,_height,_width,_height);
}
var img2=new Image();
img2.src =$("#id_img2").attr("src");
img2.οnlοad=function(){
    //绘画
    context.drawImage(id2Src,0.5*_width,2.5*_height,_width,_height);
    //最后将画布转换为图片
    var dataURL = canvas.toDataURL('image/png', 1); //转换图片为dataURL
    callBase(dataURL,count);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路追求匠人精神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值