uniapp 小程序 多张图片生成海报以及下载海报

uniapp 小程序 多张图片生成海报以及下载海报

  1. 上代码
export default {
	data() {
		return {
			unit: 0,
			imgurl:"", // 海报图片
			shareimg:"https://eshopfile.zhiyousx.com/2022051811164947691.jpg", //背景图
			qrcode :"", // 二维码
			saveTop:80,
		}
	},
	onLoad(option) {
	    let that = this
		uni.getSystemInfo({
		  success: (res) => {
			that.unit = res.screenWidth/750
		  }
		});
	},
	methods:{
       // 获取二维码
		getqrcodeImg(){
			this.$https('GET','xxxx/xxxx/xxxx',).then(res => {
				if(res.code === 1){
				// 有现成的可以不用掉接口
					this.qrcode = res.data
					this.genQrFile()
				}
			})
		},
		genQrFile() {
			let unit = this.unit
			uni.showLoading()
			this.saveTop = parseInt(80*unit)
			var urlQR = this.getNetworkImage(this.qrcode);//二维码。
			var bg=this.getNetworkImage(this.shareimg);//背景图片转为本地图片
			let that = this;
			Promise.all([
				bg,urlQR
			]).then(res => {
			// 创建 canvas 绘图上下文(指定 canvasId)
			let ctx = uni.createCanvasContext('firstCanvas', this);
			// 绘制图像到画布  
			/** 
			 * 参数1  所要绘制的图片资源 
			 * 参数2  图像的左上角在目标canvas上 X 轴的位置
			 * 参数3  图像的左上角在目标canvas上 Y 轴的位置
			 * 参数4  在目标画布上绘制图像的宽度,允许对绘制的图像进行缩放
			 * 参数5  在目标画布上绘制图像的高度,允许对绘制的图像进行缩放
			 */
			ctx.drawImage(res[0], 0, 0, parseInt(640*unit), parseInt(1140*unit));
			ctx.beginPath()
			// 你也可以插入文字
			// ctx.fillText('textAlign=right', 150, 100)
			let x = parseInt(117*unit),y= parseInt(483*unit),w=parseInt(220*unit),h=parseInt(225*unit)
			ctx.arc(w / 2 + x, w / 2 + y, h / 2, 0, Math.PI * 2, false)
			ctx.clip()
			// 绘制第二张图片图像到画布
			ctx.drawImage(res[1], x,y,w, h);
			ctx.restore()
				ctx.draw(false, () => {
					// 把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径
					uni.canvasToTempFilePath({
						x: 0,
						y: 0,
						width: 375,
						height: 840,
						destWidth: 640,
						destHeight: 1140,
						canvasId: 'firstCanvas',
						success: function(res) {
							// 保存文件路径
							that.imgurl = res.tempFilePath
							uni.hideLoading()
						},
						fail(e) {
							uni.hideLoading()
						}
					});
				});
			})
		},
		// 图片转为本地图片
		getNetworkImage(url) {
			return new Promise((resolve, reject) => {
				uni.downloadFile({
				url,
				success: (e) => {
					const p = e.tempFilePath
					if (p.indexOf('json') > -1) {
						reject(p)
						return false
					}
					resolve(p)
				},
				fail: (r) => {
					reject(r)
				}
			})
			})
		},
    }
}			     
			
  1. 下载海报
    我的上一篇博客有后半部分图片保存代码!

  2. 搞定! 日常开发代码记录。

相关推荐

  1. uniapp 程序 图片生成海报以及下载海报

    2024-04-25 16:36:02       12 阅读
  2. 微信程序生成二维码海报并分享

    2024-04-25 16:36:02       39 阅读
  3. html2canvas截图生产海报图片

    2024-04-25 16:36:02       38 阅读
  4. uniapp微信程序下载base64图片流或https图片

    2024-04-25 16:36:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 16:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 16:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 16:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 16:36:02       18 阅读

热门阅读

  1. 代码随想录第34天: 贪心part03

    2024-04-25 16:36:02       12 阅读
  2. 济南软件企业认定标准

    2024-04-25 16:36:02       12 阅读
  3. 前端中的同步和异步任务详细说明

    2024-04-25 16:36:02       15 阅读
  4. 常用的 Spring Boot 注解及其作用

    2024-04-25 16:36:02       12 阅读
  5. 英语语法速成(4)

    2024-04-25 16:36:02       11 阅读
  6. 李沐63_束搜索——自学笔记

    2024-04-25 16:36:02       14 阅读
  7. 用Python搭建一个猜数字小游戏

    2024-04-25 16:36:02       14 阅读
  8. - 实际案例演示Single-Spa的使用步骤

    2024-04-25 16:36:02       11 阅读
  9. C++人工智能程序01A版本

    2024-04-25 16:36:02       13 阅读
  10. uniapp实现相册、拍照及视频录制功能

    2024-04-25 16:36:02       13 阅读