js使用Canvas將多張圖片合并成一張的實(shí)現(xiàn)代碼
解決方案
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 )
代碼稍微優(yōu)化一下,改成公共方法
/** * 合并多張圖片,返回新的圖片 * @param {Array} list 圖片url數(shù)組 * @param {Number} cwith 畫(huà)布寬度 默認(rèn)500 * @param {Number} cheight 畫(huà)布高度 默認(rèn)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 = base64document.body.appendChild(imgDom)})
效果
到此這篇關(guān)于js使用Canvas將多張圖片合并成一張的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)js canvas圖片合并一張內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. HTTP協(xié)議常用的請(qǐng)求頭和響應(yīng)頭響應(yīng)詳解說(shuō)明(學(xué)習(xí))2. IntelliJ IDEA創(chuàng)建web項(xiàng)目的方法3. django創(chuàng)建css文件夾的具體方法4. Android studio 解決logcat無(wú)過(guò)濾工具欄的操作5. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼6. 原生JS實(shí)現(xiàn)記憶翻牌游戲7. IntelliJ IDEA導(dǎo)入項(xiàng)目的方法8. ASP.NET MVC通過(guò)勾選checkbox更改select的內(nèi)容9. ASP中實(shí)現(xiàn)字符部位類似.NET里String對(duì)象的PadLeft和PadRight函數(shù)10. Django REST Swagger實(shí)現(xiàn)指定api參數(shù)
