解决方案
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) })
效果
到此这篇关于js使用Canvas将多张图片合并成一张的实现代码的文章就介绍到这了,更多相关js canvas图片合并一张内容请搜索站长技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持站长技术!
本文旨在指导系统管理人员或安全检查人员进行Linux操作系统的安全合规性检查和加...
简而言之,归档是一个包含一系列文件和(或)目录的单一文件。归档文件通常用于...
本文为大家分享了WebStorm安装教程,供大家参考 一、简介 WebStorm 是jetbrains...
nginx大家如果没用过那或多或少都应该听过,vue的部署、反向代理、负载均衡nginx...
在Spring Security 实战干货:客户端OAuth2授权请求的入口中我们找到了拦截OAuth...
1、jsp img alt="test" src="getImg2.do" 2、controller @RequestMapping("getIm...
前端HTML !DOCTYPE html{% load static %}{% get_static_prefix as getstatic %}...
由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显...
经常听到这样的事情,某个程序员在后台执行个Sql语句,然后把线上服务都拖垮了。...
大多数的导航栏都是横向排列如下图所示,那么这究竟是怎么实现的呢?其实它主要...