多张图片使用 canvas 合成时,有的不显示?

2019-11-07 10:38:55 +08:00
 xiaozy

我有 N 多图需要与另一张图合成一张 所以我把图片存在一个数组里

var img = [];
for(var i = 0; i < $('.pic').length; i++){
    img.push($('.pic').eq(i).attr('src'));
    canvasit(i,img);
    //为了方便使用,我把合成放在函数中进行...
}
//开始绘制
function canvasit(i,img){
    var pic = new Image();
    var code = new Image();
    var canvas = document.createElement('canvas');
    var ctx = canvas.getContext("2d");
    pic.src = img[i];
    pic.onload = function(){
        ctx.drawImage(pic,0,0);
        code.src = '另一张需要合成的图片地址';
        code.onload = function(){
            ctx.drawImage(code,0,0);
            var imgs = document.createElement('img');
            imgs.src = canvas.toDataURL("image/png");
            document.body.appendChild(imgs);
        }
    }
}

代码如上所示,图片若干张,很多。每张都需要与另一张图片合成绘制,通过以上代码可以实现,但问题是,有的能够显示,有的显示不出来,查看代码,不显示的 img 里的 src 地址为 data:,显示正常的是 base64 的地址。已经研究好长时间啦,不知道啥问题。请问该如何解决呢?如果您知道还望能够给予帮助,非常感谢!~

2465 次点击
所在节点    JavaScript
5 条回复
userdhf
2019-11-07 10:43:48 +08:00
等全都 onload 再绘制试试?
难道不会出现 onload 顺序不一致的问题么?
xdaoo
2019-11-07 10:54:32 +08:00
base64 的地址不也是 data:吗
rodjl
2019-11-07 12:25:12 +08:00
base64 不也是 data 开头的吗+1
xiaozy
2019-11-08 15:32:07 +08:00
@rodjl 但除了 data 外啥也没有了,
xiaozy
2019-11-08 15:32:37 +08:00
@userdhf 在 onload 里是可以打印出所有图片地址的。没有跨域图片

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/617126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX