首页 > 其他分享 >前端实战之使用canvas合并图片

前端实战之使用canvas合并图片

时间:2024-11-05 17:46:30浏览次数:2  
标签:实战 src canvas myImage2 前端 myImage context var

最近做一个完整的系统,前端中涉及到一个推广图片的生成,其中推广图片是由一个变化的链接生成的二维码与一个固定图片拼接而成

实现demo:

 

html部分:

<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);
 
        }
    }
}

 

其中生成二维码是使用的

qrcodejs2-fix
pnpm install qrcodejs2-fix

注意: 这里使用的是qrcode2-fix,因为我的是在vue3项目中,使用qrcode2会出现一些问题

 

标签:实战,src,canvas,myImage2,前端,myImage,context,var
From: https://www.cnblogs.com/xingxia/p/18528450/web_canvas

相关文章

  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园疫情大学生防控出入系统等问题,对校园疫情大学生防控出入系统进行研究分析,然后开发设计......
  • 计算机毕业设计项目推荐,高校学生社团管理系统 00498(开题答辩+程序定制+全套文案 )上万
    摘要随着计算机科学技术的日渐成熟,人们已经深刻地认识到了计算机在各个领域中发挥的功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。目前学校学生社团的管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • 前端开发之jsencrypt加密解密的使用方法和使用示
    1、安装组件npminstalljsencrypt--dev2、创建加密解密的方法文件3、文件内容importJSEncryptfrom'jsencrypt'//去密钥生成网址去生成公钥和密钥http://tools.jb51.net/password/rsa_encodeconstpublicKey='生成的公钥'//前端不建议存放私钥不建议解密数据因......
  • vue前端项目部署的一点小tip
    一个典型的前后端分离项目,前端分用户入口和管理员入口,一般希望这样部署:https://mydomain.com/   普通用户入口https://mydomain.com/admin/ 管理员入口关键就是在vite.config.ts里要这么指定base:base:'./'这样build出来的文件,不管放在哪个项目下面都可以正常运行,......
  • 销售精英必备:五大实战策略,重塑职场心态,迈向成功巅峰
    销售是一项充满挑战与高标准要求的职业。为了取得卓越的销售业绩,销售人员必须具备良好的抗压能力,并能灵活调整工作心态,以积极且感恩的态度去面对职场与生活的种种。以下是提升销售人员心态的五大实用策略:放下无谓的面子观历史告诉我们,过分在意面子往往限制了个人的成长与成功。......
  • 八字排盘PHP算法实现源码_网页前端设计(包含十神、藏干、大运流年)
    一、算法概述八字排盘是根据个人的出生年、月、日、时(四个时间点)计算出天干地支,并形成八字(年柱、月柱、日柱、时柱)。此外,排盘还涉及十神(如正财、偏财等)、藏干(每个地支内藏的天干)、大运和流年等内容。这些元素共同构成了一个人的命理信息。二、输入信息用户需要提供以下信息:......
  • 【图神经网络】 AM-GCN代码实战(1)【pytorch】代码可运行
    AM-GCN网络系列代码实践部分1.环境设置2.代码运行指令2.1命令行执行代码2.1IDE执行(1)2.2IDE执行(2)3.参数选择4.总结代码实践部分本专栏致力于深入探讨图神经网络模型相关的学术论文,并通过具体的编程实验来深化理解。读者可以根据个人兴趣选择相关内容进行学......
  • 【前端】六款高颜值登录页面
    原创吴旭东无限大infinity第一款–简约风格HTML:<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 【前端】六款高颜值注册界面
    原创吴旭东无限大infinity和昨天的一样,带来了六款注册界面,可复制源码(需要定制请加微信)第一款–简约风格HTML:<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-wi......
  • pyspark建模(类似于dwd层),flask直接对接前端请求进行召回(类似于ads层,但是不保存)
    2.SparkMLib2.1SparkMLib开发环境准备2.1.1配置python和spark环境安装Python环境安装Anaconda3-5.2.0-Windows-x86_64.exe配置环境变量Anaconda_HOMEE:\20241014_Soft\Anaconda3PATH%Anaconda_HOME%Scripts;%Anaconda_HOME%Library\mingw-w64\bin;%Anaconda_H......