首页 > 其他分享 >利用canvas合并两个海报

利用canvas合并两个海报

时间:2022-12-21 10:45:41浏览次数:34  
标签:opt canvas 合并 海报 bgImage width var height

图片1 是个海报,图片2是个二维码,把这个二维码镶嵌到图片1 的指定位置上

function drawAndShareImage(opt, cb) {
  if (!opt) {
    console.error('没有图片');
    return;
  }
  //imgSrc1 背景图片(二维码)链接
  //imgSrc2 小图片(头像)链接
  var canvas = document.createElement('canvas');

  canvas.width = opt.width;
  canvas.height = opt.height;

  var context = canvas.getContext('2d');


  var bgImage = new Image();

  bgImage.src = opt.bgImage;
  bgImage.crossOrigin = 'Anonymous';

  bgImage.onload = function (){
    context.drawImage(bgImage, 0, 0, opt.width, opt.height);

    var index = 0;
    for (var i = 0; i < opt.images.length; i++) {
      var img = opt.images[i];
      var imgDom = new Image();
      imgDom.src = img.src; //背景图片  你自己本地的图片或者在线图片
      imgDom.crossOrigin = 'Anonymous';
      imgDom.onload = function () {
        context.drawImage(imgDom, img.x, img.y, img.width, img.height);
        index++;
        if (index == opt.images.length) {
          var base64 = canvas.toDataURL('image/png');
          cb(base64);
        }
      };
    }
  }
}
//调用
drawAndShareImage(
              {
                width: 700,
                height: 1300,
                bgImage: bgImage,//图片资源
                images: [
                  {
                    src: src,//图片资源
                    x: x,
                    y: y,
                    width: width,
                    height: height,
                  },
                ],
              },
              function (res) {
                var myImg = document.getElementById(MyImg);
                myImg.src = res;
              }
          );
<img style="width: 100%;display: block;" id="MyImg" src="" alt="" srcset="" />

 

标签:opt,canvas,合并,海报,bgImage,width,var,height
From: https://www.cnblogs.com/Privatexaio/p/16995717.html

相关文章

  • Python-2个字典根据相同的id合并覆盖为一个字典
    a_list=[{'id':1,'value':11},{'id':2,'value':22},{'id':3,'value':33}]b_list=[{'id':1,'name':'a'},{'id':2,'name':'b......
  • Html5 canvas创意特效合集
    Canvas就像一块画布,我们可以通过调用脚本在Canvas上绘制任意形状,甚至是制作动画。本文就是收集了很多非常富有创意的一些canvas动画特效例子,这些例子都非常适合大家学习。......
  • Canvas学习笔记(七)变形操作
    前言大家好,我是汪小成。最近在学习Canvas。这篇文章是我学习Canvas变形操作时记的笔记,欢迎大家审阅。简介在Canvas中有如下三个基本变形操作:图形平移:translate(x,y)......
  • Android官方技术文档翻译——清单合并
    翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的“顶”;如有错讹,敬请指正。谢谢。 这个新的合并工具是gradleandroid插件的0.10版中引入的。截至0.11版本,该gr......
  • 拼接合并PDF文件
    工具:python,PyPDF2安装PyPDF2:pipinstallPyPDF2待合并文件:合并代码:fromPyPDF2importPdfMergermerger=PdfMerger()#将文件名放入列表files=[(st......
  • ☆ 启发式 ☆ 合并! ☆ 分裂! ☆
    我不知道为啥要起这个标题。启发式合并就是一个思想,把小的往大里合。感性理解,就是每次合并一定会使集合大小翻倍,于是复杂度仅多一个\(\log\)。树上启发式合并难维护的......
  • 带条件的矩阵去重合并
    问题:根据条件将矩阵中的唯一值合并到一个单元格内let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],逆透视的其他列=Table.UnpivotOtherColumns(源,......
  • 矩阵去重合并
    问题:保留矩阵中的唯一值,再合并到一起let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],逆透视的列=Table.UnpivotOtherColumns(源,{},"属性","值......
  • 带条件的矩阵去重合并
    问题:同一条件下所有人员去重后合并到一个单元格函数公式解决:=CONCAT(UNIQUE(IFERROR(INDEX(FILTER(B$2:D$10,A$2:A$10=F2),N(IF(1,ROW($3:$20)/3)),N(IF(1,MOD(ROW($3:......
  • 矩阵去重合并
     问题:A2:C5区域去除重复项后再合并到一个单元格内函数公式解决:=CONCAT(UNIQUE(T(OFFSET(A1,ROW(3:14)/3,MOD(ROW(3:14),3)))))ROW(3:14)/3生成1、1、1、2、2、2、3......