【uniapp】图片合成并导入base64

两张图片合成,宽度固定,高度根据图片自适应

调用

javascript 复制代码
this.mergeImgs(this.imgList).then((res)=>{
	console.log(res,'图片base64')
})

方法

javascript 复制代码
mergeImgs(imgList) {
				// 图片合成
				return new Promise((resolve, reject) => {
					Promise.all(this.fileDtoList.map(imgList)).then((images) => {
						const canvas = document.createElement('canvas')
						const ctx = canvas.getContext('2d')
						// 确定合成图片的宽度
						const maxWidth = 1000; // 设置期望的宽度
						// 计算合成图片的高度
						const totalHeight = images.reduce((total, img) => {
						  const aspectRatio = img.width / img.height;
						  const scaledHeight = maxWidth / aspectRatio;
						  return total + scaledHeight;
						}, 0);
				
						// 设置 canvas 的大小
						canvas.width = maxWidth;
						canvas.height = totalHeight;
				
						// 在 canvas 上绘制图片
						let currentY = 0;
						images.forEach(image => {
						  const aspectRatio = image.width / image.height;
						  const scaledHeight = maxWidth / aspectRatio;
						  ctx.drawImage(image, 0, currentY, maxWidth, scaledHeight);
						  currentY += scaledHeight;
						});
						const base64 = canvas.toDataURL('image/png')
						resolve(base64)
					})
				})
			},
			loadImage(url) {
				return new Promise((resolve, reject) => {
					const image = new Image();
					image.onerror = reject;
					image.src = url;
					image.crossOrigin = 'Anonymous'
					image.onload = () => resolve(image);
				});
			},
相关推荐
游戏开发爱好者816 分钟前
iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固 无源码混淆
android·ios·小程序·https·uni-app·iphone·webview
两个西柚呀4 小时前
未在props中声明的属性
前端·javascript·vue.js
子伟-H56 小时前
App开发框架调研对比
前端
桃子不吃李子6 小时前
axios的二次封装
前端·学习·axios
2501_916008896 小时前
用多工具组合把 iOS 混淆做成可复用的工程能力(iOS混淆|IPA加固|无源码混淆|Ipa Guard|Swift Shield)
android·开发语言·ios·小程序·uni-app·iphone·swift
SteveJrong6 小时前
面试题 - JavaScript
前端·javascript·面试·ecmascript·基础·找工作·红宝书
阿金要当大魔王~~6 小时前
uniapp 页面标签 传值 ————— uniapp 定义 接口
前端·javascript·uni-app·1024程序员节
全栈软件开发7 小时前
uniapp三端影视源码苹果cms自动采集电影视频网站源码前端源码带VIP
前端·uni-app·影视源码
chxii7 小时前
10.4FormData :前端文件上传与表单数据处理的核心工具
前端
AntBlack8 小时前
不当韭菜 : 好像真有点效果 ,想藏起来自己用了
前端·后端·python