利用canvas合并两个海报
图片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="" />
利用canvas合并两个海报的更多相关文章
- 利用python合并两个文件
1格式如下 在做利用zabbix的api来批量添加主机的时候,需要处理ip和hostname,在借用别人写的py程序的基础上,自己有改装了以下脚本,为自己使用.需要时ip和hostname为一个统一格 ...
- 利用bat合并两个hex文件
单片机程序如果有IAP功能的话,就会生成两个hex文件,一个是Boot,一个是App,如果给让生产烧录两个文件,就会降低生产效率,所以在烧录前最好将两个文件合并成一个文件,烧录一次即可,合并方法如下: ...
- canvas合并两张图片
解析: 原理是一样的 画多张图需要一张一张画 也就是等图片onload成功后处理 这里代码写的比较随意 实际用的时候可以小粉转一下 也非常简单.我懒~~ 么么.. newImage(text) { / ...
- leetcode-88合并两个有序数组
合并两个有序数组 思路:利用索引合并两个列表,排序.注意不需要返回值,只修改nums1 class Solution: def merge(self, nums1: List[int], m: int ...
- 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)
小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...
- HTML5利用canvas,把多张图合并成一张图片
需求分析,根据当前网页中的几张图片,在手机上长按,保存图片到相册或者发送给好友. drawCanvas(){ var self = this; var imgsrcArray = [ require( ...
- 用H5中的Canvas等技术制作海报
在去年的时候也实现过合成海报的功能,不过当时时间仓促,实现的比较简单. 就一个旋转功能,图片也不能拖动放大,也不能裁剪. 去年的实现可以参考<移动图片操作--上传>和<移动图片操作- ...
- 利用Canvas进行绘制XY坐标系
首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所 ...
- 如何利用SVN合并代码
一. 背景 平时在进行开发时,一般都会有多版本同时进行,包括项目版本.周版本.紧急版本等,当某一个版本具备上线条件后,需要在上一个已发布的版本基础上进行发布,才能够避免出现版本相互覆盖,因此 ...
- Python合并两个numpy矩阵
numpy是Python用来科学计算的一个非常重要的库,numpy主要用来处理一些矩阵对象,可以说numpy让Python有了Matlab的味道. 实际的应用中,矩阵的合并是一个经常发生的操作,如何利 ...
随机推荐
- Java 进阶P-11+P-12
文本流 在流上建立文本处理 PrintWriter pw = new PrintWriter()( new BufferedWriter( new Out put StreamWriter( new ...
- Sqoop导出ClickHouse数据到Hive
背景 公司采购了外部服务,其存储为ClickHouse,按照公司要求需要将其数据采集到Hive. 验证环境 CDH: 6.3.2 ClickHouse: 19.15.4.10 Sqoop: 1.4.7 ...
- 【Rust学习】内存安全探秘:变量的所有权、引用与借用
作者:京东零售 周凯 一.前言 Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月,是一种高效.可靠的通用高级语言.其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有 ...
- SpringBoot 2.x 在Tomcat8上无法运行,报无法访问错误
非法访问:此Web应用程序实例已停止.无法加载[].为了调试以及终止导致非法访问的 这仅是我的一个Filter重写的时候没有重写他的其他两个方法,导致我在Tomcat8上不能运行,但在Tomcat9上 ...
- Svelte框架结合SpreadJS实现表格协同文档
SpreadJS是葡萄城结合 40 余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件.作为一个类Excel控件,SpreadJS如何实现当前比较流行的表格协同呢?本篇文章将简单介绍一下 ...
- react 高效高质量搭建后台系统 系列 —— 结尾
其他章节请看: react 高效高质量搭建后台系统 系列 尾篇 本篇主要介绍表单查询.表单验证.通知(WebSocket).自动构建.最后附上 myspug 项目源码. 项目最终效果: 表单查询 需求 ...
- TCP/IP协议(4): 地址解析协议(ARP) —— 网络地址转换为物理地址的方式
TCP/IP协议(4): 地址解析协议(ARP)--网络地址转换为物理地址的方式 关于地址解析协议(Address Resolution Protocol, ARP) 关于 ARP 地址解析协议(Ad ...
- 研究c#异步操作async await状态机的总结
前言 前一段时间得闲的时候优化了一下我之前的轮子[DotNetCoreRpc]小框架,其中主要的优化点主要是关于RPC异步契约调用的相关逻辑.在此过程中进一步了解了关于async和await异步操作相 ...
- Java基础语法:注释、数据类型、字节
Java基础语法:注释.数据类型.字节 注释 单行注释:// 多行注释:/* 注释 */ 文档注释:/** 注释 */ 数据类型分为两大类:基本类型和引用类型 八大基本数据类型 整数类型 byte(占 ...
- JZOJ 1075. 【GDKOI2006】新红黑树
\(\text{Problem}\) A君和B君在玩一种叫做新红黑树的游戏,即在一棵由红枝和黑枝构成的树上轮流砍树枝,每次砍一枝,A君每次只能砍红枝,B君每次只能砍黑枝,当其中某人已经没有树枝砍的时候 ...