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

Introduction to query commands for MySQL stored procedures

As shown below: select name from mysql.proc where...

How to implement a single file component in JS

Table of contents Overview Single file components...

How to install and configure the Apache Web server

Learn how to host your own website on Apache, a r...

Solve the problem that Mysql5.7.17 fails to install and start under Windows

Install MySQL for the first time on your machine....

MySQL 8.0.15 installation and configuration method graphic tutorial

This article records the installation and configu...

Solve the black screen problem after VMware installs Linux system and starts

1. Installation environment 1. HUAWEI mate x cpu ...

About VUE's compilation scope and slot scope slot issues

What are slots? The slot directive is v-slot, whi...

Analyzing the node event loop and message queue

Table of contents What is async? Why do we need a...

Steps to set up Windows Server 2016 AD server (picture and text)

Introduction: AD is the abbreviation of Active Di...