js使用Canvas将多张图片合并成一张的实现代码
作者:weixin_45337170 时间:2024-05-25 15:17:59
解决方案
function mergeImgs(list) {
const imgDom = document.createElement('img')
document.body.appendChild(imgDom)
const canvas = document.createElement('canvas')
canvas.width = 500
canvas.height = 500 * list.length
const context = canvas.getContext('2d')
list.map((item, index) => {
const img = new Image()
img.src = item
// 跨域
img.crossOrigin = 'Anonymous'
img.onload = () => {
context.drawImage(img, 0, 500 * index, 500, 500)
const base64 = canvas.toDataURL('image/png')
imgDom.setAttribute('src', base64)
// console.log(baseList)
}
})
}
const urlList = ['./img/timg%20(1).jpg', './img/timg.jpg']
mergeImgs(urlList )
代码稍微优化一下,改成公共方法
/**
* 合并多张图片,返回新的图片
* @param {Array} list 图片url数组
* @param {Number} cwith 画布宽度 默认500
* @param {Number} cheight 画布高度 默认500
*/
function mergeImgs(list, cwith = 500, cheight = 500) {
return new Promise((resolve, reject) => {
const baseList = []
const canvas = document.createElement('canvas')
canvas.width = cwith
canvas.height = cheight * list.length
const context = canvas.getContext('2d')
list.map((item, index) => {
const img = new Image()
img.src = item
// 跨域
img.crossOrigin = 'Anonymous'
img.onload = () => {
context.drawImage(img, 0, cheight * index, cwith, cheight)
const base64 = canvas.toDataURL('image/png')
baseList.push(base64)
if (baseList[list.length - 1]) {
console.log(baseList)
// 返回新的图片
resolve(baseList[list.length - 1])
}
}
})
})
}
const urlList = ['./img/timg%20(1).jpg', './img/timg.jpg']
mergeImgs(urlList ).then(base64 => {
const imgDom = document.createElement('img')
imgDom.src = base64
document.body.appendChild(imgDom)
})
效果
来源:https://blog.csdn.net/weixin_45337170/article/details/115318940
标签:js,canvas,图片,合并
0
投稿
猜你喜欢
django中间键重定向实例方法
2021-04-17 12:34:02
解决PyCharm中光标变粗的问题
2022-10-24 15:47:32
Python 窗体(tkinter)下拉列表框(Combobox)实例
2022-04-01 02:38:07
优化 SQL Server 索引的小技巧
2012-10-07 11:00:07
浅谈golang二进制bit位的常用操作
2024-05-22 10:14:49
Symfony2框架创建项目与模板设置实例详解
2023-11-20 23:36:39
Django实战之用户认证(初始配置)
2022-08-17 22:15:02
初学js者对javascript面向对象的认识分析
2011-03-16 11:04:00
Python接单的过程记录分享
2022-05-24 13:33:23
采用python实现简单QQ单用户机器人的方法
2022-06-26 03:28:40
Python绘制全球疫情变化地图的实例代码
2022-08-27 07:06:46
Python 中使用 PyMySQL模块操作数据库的方法
2024-01-26 04:23:11
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2021-04-26 09:11:26
分享几个字体设计
2007-10-10 13:53:00
基于GORM实现CreateOrUpdate方法详解
2024-02-14 09:18:02
JS数组合并push与concat区别分析
2024-04-22 22:40:09
Silverlight 3 Beta出来了
2009-03-19 13:17:00
mysql varchar类型求和实例操作
2024-01-14 05:39:21
Python使用爬虫爬取静态网页图片的方法详解
2021-02-18 20:07:58
设计稿标注首屏线的确定始末
2011-03-30 12:36:00