AI智能
改变未来

js使用Canvas将多张图片合并成一张的实现代码

解决方案

function mergeImgs(list) {const imgDom = document.createElement(\'img\')document.body.appendChild(imgDom)const canvas = document.createElement(\'canvas\')canvas.width = 500canvas.height = 500 * list.lengthconst 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 = cwithcanvas.height = cheight * list.lengthconst 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 = base64document.body.appendChild(imgDom)})

效果

到此这篇关于js使用Canvas将多张图片合并成一张的实现代码的文章就介绍到这了,更多相关js canvas图片合并一张内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

  • js+canvas实现两张图片合并成一张图片的方法
  • js 将canvas生成图片保存,或直接保存一张图片的实现方法
  • js实现canvas保存图片为png格式并下载到本地的方法
  • JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
  • js+html5绘制图片到canvas的方法
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » js使用Canvas将多张图片合并成一张的实现代码