Solution 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 // Cross-domain 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 ) Optimize the code slightly and change it to a public method /** * Merge multiple images and return a new image * @param {Array} list Image url array * @param {Number} cwith Canvas width defaults to 500 * @param {Number} cheight The default height of the canvas is 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 // Cross-domain 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) // Return the new image 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) }) Effect This is the end of this article about the implementation code of js using Canvas to merge multiple images into one. For more relevant js canvas image merging content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: How to quickly install and deploy MySQL in Windows system (green free installation version)
>>: Basic knowledge of load balancing and a simple example of load balancing using nginx
Introduction Animation allows you to easily imple...
Find the problem Recently, I found a problem at w...
Table of contents Start Docker Stop Docker Python...
When you send a network request, the following sa...
Table of contents mapState mapGetters mapMutation...
Table of contents 1. Array flattening (also known...
When we are doing front-end development, we will ...
The most understandable explanation of the accura...
Table of contents 1. Introduction to calculator f...
1. Install less dependency: npm install less less...
MySQL previously had a query cache, Query Cache. ...
Problem Description By configuring nginx, you can...
At first, I wanted to modify the browser scroll b...
Copy code The code is as follows: <!DOCTYPE ht...
This article example shares the specific code of ...