HTML5教程

前端实现两张图片合成一张

本文主要是介绍前端实现两张图片合成一张,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

将两张图片合成一张, 原理是利用canvas技术,先画一张画布,然后在画布上画第一张图,后面在第一张图的基础上指定位置画第二张图。可以说是有三层,底层是张画布,中间层是第一张图,上层是第二张图。一般第二张图尺寸要小于第一张图的, 不然就遮盖住了中间层的图了。

先上图看看

http://img1.sycdn.imooc.com/5f1169560001353b01480147.jpg

http://img1.sycdn.imooc.com/5f11695600011ba904060641.jpg

现在我们需要将二维码图片放到海报二维码预留的空白区域,制作出完整的海报图。

http://img3.sycdn.imooc.com/5f116a800001549b04080646.jpg

上代码:

<div>
    <img id="qrcode" src="/img/promotion/qrcode.png" alt="二维码">
    <img id="poster" src="/img/promotion/poster.png" alt="海报模板">
    <img id="myPoster"  alt="合成海报">
</div>
<button ng-click="drawPosterImage()">合成图片</button>

js部分:

//生成海报
$scope.drawPosterImage = function(){
    var canvas;
    canvas = document.createElement("canvas");
    canvas.width = 1242;
    canvas.height = 2208;
    var context = canvas.getContext("2d");
    context.rect(0 , 0 , canvas.width , canvas.height);
    context.fillStyle = "#fff";
    context.fill();

    var myImage2 = new Image();
    myImage2.src = $("#poster").attr("src"); 
    myImage2.crossOrigin = 'Anonymous';
    myImage2.onload = function(){
        context.drawImage(myImage2 , 0 , 0 , 1242 , 2208);

        var myImage = new Image();
        myImage.src = $("#qrcode").attr("src"); 
        myImage.crossOrigin = 'Anonymous';
        myImage.onload = function(){
            context.drawImage(myImage , 499 , 1703 , 243 , 243);
            var base64 = canvas.toDataURL("image/png");     //获取base64的图片流
            var img = document.getElementById('myPoster');
            img.setAttribute('src' , base64);

        }
    }
}


这篇关于前端实现两张图片合成一张的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!