js uses Canvas to merge multiple pictures into one implementation code

js uses Canvas to merge multiple pictures into one implementation code

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

insert image description here

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:
  • js+canvas realizes the method of merging two pictures into one picture
  • js saves the image generated by canvas, or directly saves an image
  • js implements canvas method to save pictures in png format and download them locally
  • JS mobile/H5 select multiple images to upload at the same time and use canvas to compress the images
  • How to draw pictures on canvas using js+html5

<<:  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

Recommend

A brief discussion on the performance issues of MySQL paging limit

MySQL paging queries are usually implemented thro...

Useful codes for web page creation

<br />How can I remove the scroll bar on the...

How to implement CSS mask full screen center alignment

The specific code is as follows: <style> #t...

Vue implements mobile phone verification code login

This article shares the specific code of Vue to i...

How to install babel using npm in vscode

Preface The previous article introduced the insta...

Goodbye Docker: How to Transform to Containerd in 5 Minutes

Docker is a very popular container technology. Th...

Detailed explanation of Vue configuration request multiple server solutions

1. Solution 1.1 Describing the interface context-...

Solution to changing the data storage location of the database in MySQL 5.7

As the data stored in the MySQL database graduall...

Detailed explanation of the steps to build a Vue project with Vue-cli

First you need to install Vue-cli: npm install -g...

Common operation commands of MySQL in Linux system

Serve: # chkconfig --list List all system service...

40+ Beautiful Web Form Design Examples

Web forms are the primary communication channel b...

Implementation of Docker packaging image and configuration modification

I have encountered many problems in learning Dock...