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

2024-04-25 13:04

本文主要是介绍uniapp 小程序 多张图片生成海报以及下载海报,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

  1. 上代码
export default {data() {return {unit: 0,imgurl:"", // 海报图片shareimg:"https://eshopfile.zhiyousx.com/2022051811164947691.jpg", //背景图qrcode :"", // 二维码saveTop:80,}},onLoad(option) {let that = thisuni.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.datathis.genQrFile()}})},genQrFile() {let unit = this.unituni.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.tempFilePathuni.hideLoading()},fail(e) {uni.hideLoading()}});});})},// 图片转为本地图片getNetworkImage(url) {return new Promise((resolve, reject) => {uni.downloadFile({url,success: (e) => {const p = e.tempFilePathif (p.indexOf('json') > -1) {reject(p)return false}resolve(p)},fail: (r) => {reject(r)}})})},}
}			     
  1. 下载海报
    我的上一篇博客有后半部分图片保存代码!

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

这篇关于uniapp 小程序 多张图片生成海报以及下载海报的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934759

相关文章

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

C#自动化生成PowerPoint(PPT)演示文稿

《C#自动化生成PowerPoint(PPT)演示文稿》在当今快节奏的商业环境中,演示文稿是信息传递和沟通的关键工具,下面我们就深入探讨如何利用C#和Spire.Presentationfor.NET... 目录环境准备与Spire.Presentation安装核心操作:添加与编辑幻灯片元素添加幻灯片文本操

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector