web实现nft图片批量拼接

805 阅读1分钟
使用技术:
html2canvasdiv 转化为图片
JSZip: 生成压缩包,里面可以包含多张图片,用于一键生成所有图品
生成图片算法: let a = [[1,2,3],[4,5]] 转化为 [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
indexedDb : 用户操作保存下来,生成模板,方便后面使用

  
  
  
  indexedDB 优势: 储存数据大,
  indexedDB 详细应用看这个: (https://blog.csdn.net/weixin_35958891/article/details/105112381)
  
 清除浏览器缓存:谷歌中indexedDB会被清掉,火狐没有去掉,可能一般都可以清除掉,也可以手动去删除,
 而且有些时候,谷歌清除了indexedDB的表,库没有删,导致indexedDB运行报错,手动删除一下就好了,
 safari 浏览器可能不支持indexedDB
 代码地址: 
 https://gitee.com/liboyaoyao/img.git
 

生成图片算法:

     function ceshi(param) {
		let returnObg = [];
		for (let i = 0; i < param.length; i++) {
			//returnObg return 出去的值,如果一开始没有是加进去,有的话是在已有的数据上添加
			if (returnObg.length === 0) {
				for (let j = 0; j < param[i].length; j++) {
					returnObg.push({
						url: param[i][j].url
					})
				}

			} else {
				let oldReturnObg = JSON.parse(JSON.stringify(returnObg));
				returnObg = [];
				for (let j = 0; j < param[i].length; j++) {
					for (let k = 0; k < oldReturnObg.length; k++) {
						let newArr = [];
						//已有的可能是数据,也可能是单个,数组就分解,单个直接用
						if (oldReturnObg[k] instanceof Array) {
							newArr = [...oldReturnObg[k], param[i][j]]
						} else {
							newArr = [oldReturnObg[k], param[i][j]]
						}
						console.log(oldReturnObg[k], param[i][j], 9999987, newArr)
						returnObg.push(newArr)
					}
				}
			}
		}
		return returnObg
	}