通过canvas合成图片
通过canvas合成图片
效果图

页面布局部分
两个图片以及一个canvas画布
<img src="https://qnlite.gtimg.com/qqnewslite/20190924/avatar/head1.png" alt="" id="bg-img">
<img src="http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLFPJR06vhs1iccMd3hFzJ3GXAFm4VljTErIq6ejH3ZicIvfz9DqKxecXkKlUsZtDYYXOo9h0icQWZDw/0" alt="" id="avatar">
<canvas id="my-canvas" width="" height=""></canvas>
JavaScript代码部分
<script src="https://code.jquery.com/jquery-3.4.1.min.js" ></script>
<script type="text/javascript">
    // 获取图片及画板对象
    var border_img = document.getElementById("border-img");
    var avatar = document.getElementById("avatar");
    var ca = document.getElementById("my-canvas");
	// 创建二维画布,并设置宽高
    var ctx = ca.getContext('2d');
    ca.width = 200;
    ca.height = 200;
	// 在画布 (0, 0) 位置作为起点绘制两张图片实现合成
    ctx.drawImage(avatar, 0, 0, 200, 200);
    ctx.drawImage(border_img, 0, 0, 200, 200);
	// 得到图片的Base64编码
    dataurl = ca.toDataURL();
</script>
代码合总
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>通过canvas合成图片</title>
	</head>
	<body>
		<img crossorigin="Anonymous" src="https://qnlite.gtimg.com/qqnewslite/20190924/avatar/head1.png" alt="" id="border-img">
		<img crossorigin="Anonymous" src="http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLFPJR06vhs1iccMd3hFzJ3GXAFm4VljTErIq6ejH3ZicIvfz9DqKxecXkKlUsZtDYYXOo9h0icQWZDw/0" alt="" id="avatar">
		<hr>
		<canvas id="my-canvas" width="" height=""></canvas>
		<img src="" id="base64-img">
		<script src="https://code.jquery.com/jquery-3.4.1.min.js" ></script>
		<script type="text/javascript">
			var border_img = document.getElementById("border-img");
			var avatar = document.getElementById("avatar");
			var ca = document.getElementById("my-canvas");
			var ctx = ca.getContext('2d');
			ca.width = 200;
			ca.height = 200;
			ctx.drawImage(avatar, 0, 0, 200, 200);
			ctx.drawImage(border_img, 0, 0, 200, 200);
			dataurl = ca.toDataURL();
			$('#base64-img').attr('src', dataurl);
		</script>
	</body>
</html>
												
											通过canvas合成图片的更多相关文章
- [JavaScript] canvas 合成图片和文字
		
Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...
 - canvas合成图片 圣诞节新技能戴帽
		
<!doctype html><html><head><meta charset="utf-8"><title>Html ...
 - 用canvas合成图片
		
朋友圈有些分享功能是通过长按图片另存来实现的,就像淘宝内部要分享朋友圈的时候一样,这些图片可以用canvas来合成. 获取了img的dom对象以后,进行base64的转. //加载对象$page.ge ...
 - Canvas 实现图片合成并下载合成图片
		
现在经常会遇到那种带二维码的推广图片,如下图所示: 1是整张推广图的背景,2是二维码.这种图片的背景是保持不变的,里面的二维码是变化的.所以我们需要把二维码单独生成然后与背景合并. 我们可以通过can ...
 - Html5 Canvas 实现图片合成
		
多个图片合成一张 <!doctype html> <html> <head> <meta charset="utf-8"> < ...
 - vue 把后端返回的图片和url链接生成的二维码用canvas 合成一张图片
		
H5 页面在做某个活动的时候,有两种分享方式,一种是链接分享,一种是图片分享. 链接分享的话,如果是在微信里,就可引导用户利用微信浏览器自带的分享,根据sdk设置分享标题简介链接缩略图即可. 图片分享 ...
 - H5项目开发分享——用Canvas合成文字
		
以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...
 - <canvas合成海报>所遇问题及解决方案总结
		
最近做了一个用canvas合成海报图片的移动端项目,由于一点canvas基础都没有,所以去网上搜了一位前辈的demo,但是开发过程中遇到了很多问题,现将所遇问题及解决方法总结如下: 1.移动端canv ...
 - 离线合成联想到的--canvas合成水印
		
前段时间做了功能模块:用户设置自定义勋章: 实现方式:前端把用户设置的昵称传到后台,后台根据不同用户等级,使用离线合成技术合成不同的勋章返回到前端: 方案算是实现了,但是有点坑就是,后台的离线合成没有 ...
 
随机推荐
- 技术分享:Dapr,让开发人员更轻松地构建微服务应用
			
最近一直在学习微服务相关的技术.微服务架构已成为构建云原生应用程序的标准,并且可以预见,到2022年,将有90%的新应用程序采用微服务架构.微服务架构提供了令人信服的好处,包括可伸缩性,松散的服务耦合 ...
 - 神奇的 SQL 之团结的力量 → JOIN
			
前言 开心一刻 闺蜜家暴富,买了一栋大别野,喊我去吃饭,菜挺丰盛的,筷子有些不给力,银筷子,好重,我说换个竹子的,闺蜜说,这种银筷子我家总共才五双,只有贵宾才能用~我咬着牙享受着贵宾待遇,终于,在 ...
 - 学习了解Shiro框架
			
有关Shiro安全框架 实现权限的几种方式 1)通过表来实现 2)shiro框架 3)Spring Security框架 shiro有哪些主要功能 1.授权 访问控制的过程,即确定谁有权访问 2.身份 ...
 - Swagger--解决日期格式显示为Unix时间戳格式 UTC格式
			
在swagger UI模型架构上,字段日期显示为“日期”:“2018-10-15T09:10:47.507Z”但我需要将其作为“日期”:“2018-9-26 12:18:48”. tips:以下这两种 ...
 - mp-vue拖拽组件的实现
			
作为一个效率还不错的小前端,自己的任务做完之后真的好闲啊,千盼万盼终于盼来了业务的新需求,他要我多加一个排序题,然后用户通过拖拽来排序,项目经理看我是个实习生,说有点复杂做不出来就算了,我这么闲的一个 ...
 - Yii 数据库重连告别General error: 2006 MySQL server has gone away
			
General error: 2006 MySQL server has gone away 错误原因 制造错误 解决办法 最新办法 错误原因 Mysql has gone away MySQL 服务 ...
 - 函数基础(三)    装饰器\闭包 day 12
			
目录 昨日回顾 可变长参数 * ** 函数对象 函数嵌套 名称空间和作用域 今日内容 闭包函数 装饰器 语法糖 装饰器模板 迭代器 昨日回顾 可变长参数 * *形参:接受多余的位置实参 *实参(可迭代 ...
 - Veins(车载通信仿真框架)入门教程(四)——调试及记录结果
			
Veins(车载通信仿真框架)入门教程(四)——调试及记录结果 在Veins入门教程(三)最后的动图中(如下图)可以看到大大小小的光圈,这个怎么实现的呢? 很简单,以收到RTS消息为例,通过finHo ...
 - Spring AOP 知识整理
			
通过一个多月的 Spring AOP 的学习,掌握了 Spring AOP 的基本概念.AOP 是面向切面的编程(Aspect-Oriented Programming),是基于 OOP(面向对象的编 ...
 - Web for pentester_writeup之Code injection篇
			
Web for pentester_writeup之Code injection篇 Code injection(代码注入) Example 1 <1> name=hacker' 添加一个 ...