通过canvas合成图片
2024-10-19 11:58:29
通过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>
最新文章
- LoadRunner使用技巧-IP欺骗的使用
- sqlserver表分区
- Superpixel Based RGB-D Image Segmentation Using Markov Random Field——阅读笔记
- Linux初学 - java环境安装
- (传输层)UDP协议
- IOS中UICollectionView和UICollectionViewController的用法
- 【Unity Shaders】使用CgInclude让你的Shader模块化——创建CgInclude文件存储光照模型
- Android 观察系统中短信内容的变化(内容观察者)
- Linux svn直接删除版本库文件
- 【索引】gtest学习笔记
- XML 文档解析操作
- 小哈学Python-第一课:基本介绍
- bat获取系统时间修改系统密码
- 汇编debug与masm命令
- 大区间素数筛选(POJ 2689)
- I2C总线通讯协议
- 【netty】(2)---搭建一个简单服务器
- PowerDesigner设置Oracle不区分大小写
- Linux 文件系统与挂载详解
- 使用SpringBoot的yml文件配置时踩的一个坑
热门文章
- grunt前端自动构建工具初级使用
- selenium-显式等待与隐式等待(3)
- alinode与node性能测试方法与分析
- 面试必问的Synchronized知道这些就可以了
- kubectl get 后按2次tab键命令补全的失效原因分析
- 百万年薪python之路 -- MySQL数据库之 永久修改字符串编码 与 忘了密码和修改密码
- lamda和匿名内部类
- seq2seq+attention解读
- 蓝桥杯基础练习 Huffuman树
- 2018.8.15 python 中的sorted()、filter()、map()函数