android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片

不知有没有小伙伴用过canvas合成图片,然后爆炸

6b8152d1f2b4?5

报错截图

尼玛,然后各种搜索,不外乎以下几种坑爹处理方案:

后端处理,比如Access-Control-Allow-Origin "*"(要是请求到其他网站的图片就不适用了,比如我要请求到微信的图片)

前端处理,比如img.setAttribute('crossOrigin', 'anonymous');

试了下,尼玛还是报错,折腾个半天过去了,下班了,一大早上的在群里问了下,有个大神说和跨域没关系吧 你本地不好测 测试环境可以的

抱着试一试的态度,丢到服务器上,一访问,尼玛,竟然不报错了,我真的是RI

效果图

6b8152d1f2b4?5

效果图

示例代码

canvas合成网络图片

#h {

text-align: center;

}

#h canvas {

border-radius: 10px;

}

$(function () {

var bg = {

width: 340,

height: 500,

src: "https://oimageb5.ydstatic.com/image?id=3493803499422546314&product=adpublish&w=1280&h=720&sc=0&rm=2&gsb=0&gsbd=60"

}

var code = {

width: 100,

height: 100,

src: "./images/kf.jpg"

}

var userInfo = {

name: "嘉成大叔",

width: 170,

height: 170,

src: "http://thirdwx.qlogo.cn/mmopen/BEMV4WOAicktAAllnv9FdJFSU7QYVibMU62ctg7Ie5HiaCuDVCyiapibwrs48N97yrzLel03FvOUqAHEZGfBY5tCdnuHKEg4YvZSC/132"

}

var image = new Image();

var image1 = new Image();

var image2 = new Image();

image.src = bg.src;

image1.src = code.src;

image2.src = userInfo.src;

var canvas = document.getElementById("myCanvas");

var ctx = canvas.getContext("2d");

image.onload = function () {

ctx.drawImage(image, 0, 0, bg.width, bg.height);

ctx.drawImage(image1, 250, 100, code.width, code.height);

ctx.save();

ctx.arc(185, 200, 65, 0, Math.PI * 2, false);

ctx.clip();

ctx.drawImage(image2, 80, 80, userInfo.width, userInfo.height); // 在刚刚裁剪的园上画图

ctx.restore(); // 还原状态

ctx.font = "36px Georgia";

ctx.fillStyle = '#ffffff';

ctx.fillText(userInfo.name, 270, 250);

var mainImg = new Image();

var imgSrc = canvas.toDataURL('image/png')

mainImg.src = imgSrc;

$('#h').html("");//移除已生成的避免重复生成

$('#h').append(mainImg);

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值