当前位置: 首页 > article >正文

微信小程序 自定义图片分享-绘制数据图片以及信息文字

一 、需求

从数据库中读取头像,姓名电话等信息,当分享给女朋友时,每个信息不一样

二、实现方案

1、先将数据库中需要的头像姓名信息读取出来加载到data 数据项中

data:{firstName:'', // 姓名img:'', // 头像shareImage:'',// 存储临时图片
}

2、当进入页面时,就产生图片,分享时直接分享 在小程序onLoad函数中实现

    // 生成分享图片generateShareImage() {// 进入页面就下载头像到临时地址中const imgUrl = app.globalData.base_url +'uploads/lawyer/'+this.data.imgwx.downloadFile({url: imgUrl,success: (res) => {if (res.statusCode === 200) {// 下载成功,获取临时路径const tempFilePath = res.tempFilePath;console.log("666"+tempFilePath)// 开始绘制 注意这里this.drawPoster(tempFilePath);}},fail: (err) => {console.error('图片下载失败:', err);}});},// 绘制海报drawPoster(avatarPath){// createCanvasContext 绘制方法const ctx = wx.createCanvasContext('shareCanvas');// 绘制背景图(可以是本地或网络路径)const bgImagePath = '/images/sharebg.jpg'; // 替换为你的背景图地址// 1. 绘制背景图ctx.drawImage(bgImagePath, 0, 0, this.data.canvasWidth, this.data.canvasHeight);// 2. 设置字体样式ctx.setFontSize(10);ctx.setFillStyle('black');// 3. 绘制姓名头像if(avatarPath){ctx.save()ctx.arc(40, 30, 11 * 2, 0, 2 * Math.PI) // 圆形边框//ctx.strokeStyle = '#1A1A1A' // 设置绘制圆形边框的颜色ctx.stroke() // 绘制出圆形,默认为黑色,可通过 ctx.strokeStyle = '#FFFFFF',设置想要的颜色ctx.clip()ctx.drawImage(avatarPath,  8, 6, 70, 70) // 图像大小ctx.restore()}// ctx.fillText(`${this.data.firstName}`, 100, 50);drawMultiLineText(ctx,`${this.data.firstName}`,80,28,50, 14, 14);drawMultiLineText(ctx,`${this.data.title}`,80,45,50, 14, 10);// ctx.fillText(`${this.data.mobilePhoneNumber}`, 10, 90);drawMultiLineText(ctx,`${this.data.mobilePhoneNumber}`,35,70,100, 14, 10);// ctx.fillText(`${this.data.email}`,10,110);drawMultiLineText(ctx,`${this.data.email}`,35,90,110, 14, 10);drawMultiLineText(ctx,`${this.data.address_details}`,35,109,90, 16, 10);// 5. 绘制完成ctx.draw(false, () => {// 6. 将 Canvas 导出为临时图片路径wx.canvasToTempFilePath({canvasId: 'shareCanvas',success: (res) => {// res.tempFilePath 是生成的临时图片路径console.log(this.data.mobilePhoneNumber)this.setData({shareImage: res.tempFilePath});// 触发分享this.onShareAppMessage();},fail: (err) => {wx.showToast({ title: '生成图片失败', icon: 'none' });}});});},
onLoad(options){// 调用绘制方法this.generateShareImage()
}

3、分享图片

onShareAppMessage 触发分享

 onShareAppMessage() {return {title:'标题',//标题path: '/pages/index/index',//路径imageUrl: this.data.shareImage//图片}}

相关文章:

微信小程序 自定义图片分享-绘制数据图片以及信息文字

一 、需求 从数据库中读取头像,姓名电话等信息,当分享给女朋友时,每个信息不一样 二、实现方案 1、先将数据库中需要的头像姓名信息读取出来加载到data 数据项中 data:{firstName:, // 姓名img:, // 头像shareImage:,// 存储临时图片 } 2…...

优艾智合机器人助力半导体智造,领跑国产化替代浪潮

在全球半导体产业加速自动化转型的背景下,传统物流已成为制约智能化升级的关键瓶颈。作为中国移动机器人行业的领军企业,优艾智合(YOUIBOT)自2017年起就敏锐洞察到"半导体设备国产化"的紧迫需求,依托在工业移…...

关于 TCP 端口 445 的用途以及如何在 Windows 10 或 11 上禁用它

TCP 端口 445 主要用于直接通过 TCP/IP 访问 Microsoft 网络,无需使用 NetBIOS 层。此服务自 Windows 2000 和 Windows XP 开始在 Windows 中提供。在 Windows NT/2K/XP 中,SMB(Server Message Block)协议用于文件共享等。它在 Windows NT 中运行在 NetBT(NetBIOS over TC…...

C语言_coredump深度解析

在 C/C++ 开发中,Core Dump 是解决程序崩溃问题的重要手段。本文将系统介绍 Core Dump 的概念、用途、常见原因及调试方法,结合具体代码示例,帮助开发者快速定位和解决问题。 一、Core Dump 是什么? Core Dump(核心转储)是操作系统在进程异常终止时,将进程的内存镜像、…...

全栈项目中是否可以实现统一错误处理链?如果可以,这条链路该如何设计?需要哪些技术支撑?是否能同时满足性能、安全性和用户体验需求?

在复杂系统中,错误一旦出现,可能不断扩散,直到让整个系统宕机。尤其在一个全栈项目中,从数据库到服务器端逻辑、再到前端用户界面,错误可能在任意一个环节产生。如果我们不能在全栈范围内实现统一的错误处理机制&#…...

Twitter数据采集新选择:twitterapi.io全面评测与实战指南

之前我在CSDN上分享过如何高效获取Twitter数据:Apify平台上的推特数据采集解决方案_tweet scraper v2 (pay per result)-CSDN博客,当时介绍了如何利用Apify平台抓取Twitter数据。虽然Apify提供了不错的解决方案,但在实际项目中我遇到了一些瓶…...

排序01:多目标模型

用户-笔记的交互 对于每篇笔记,系统记录曝光次数、点击次数、点赞次数、收藏次数、转发次数。 点击率点击次数/曝光次数 点赞率点赞次数/点击次数 收藏率收藏次数/点击次数 转发率转发次数/点击次数 转发是相对较少的,但是非常重要,例如转发…...

Dify中使用插件LocalAI配置模型供应商报错

服务器使用vllm运行大模型,今天在Dify中使用插件LocalAI配置模型供应商后,使用工作流的时候,报错:“Run failed: PluginInvokeError: {"args":{},"error_type":"ValueError","message":&…...

初识计算机网络。计算机网络基本概念,分类,性能指标

初识计算机网络。计算机网络基本概念,分类,性能指标 本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,祝愿大家期末都能考一个好成绩! 视频链接地址 一、…...

【Python 操作 MySQL 数据库】

在 Python 中操作 MySQL 数据库主要通过 pymysql 或 mysql-connector-python 库实现。以下是完整的技术指南,包含连接管理、CRUD 操作和最佳实践: 一、环境准备 1. 安装驱动库 pip install pymysql # 推荐(纯Python实现&#xff0…...

标贝科技:大模型领域数据标注的重要性与标注类型分享

当前,大模型作为人工智能领域的前沿技术,其强大的泛化能力和复杂任务处理能力,依赖于海量数据的训练。而数据标注,作为连接原始数据与大模型训练的关键桥梁,在这一过程中发挥着举足轻重的作用。​ 大模型的训练依赖海…...

C++ QT图片查看器

private:QList<QString> fs;int i;void MainWindow::on_btnSlt_clicked() {QStringList files QFileDialog::getOpenFileNames(this,"选择图片",".","Images(*.png *.jpg *.bmp)");qDebug()<<files;ui->picList->clear();ui-…...

数据集-目标检测系列- 杨桃 数据集 Starfruit>> DataBall

数据集-目标检测系列- 杨桃 数据集 Starfruit&#xff1e;&#xff1e; DataBall * 相关项目 1&#xff09;数据集可视化项目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2&#xff09;数据集训练、推理相关项目&#xff1a;GitH…...

【Linux网络】网络套接字编程

套接字编程 一&#xff0c;理解端口号二&#xff0c;初识TCP/UDP协议三&#xff0c;网络字节序四&#xff0c;UDP套接字编程常用API4.1 struct sockaddr类型4.2 socket接口4.3 bind接口4.4 recvfrom4.5 sendto 五&#xff0c;TCP套接字常用API5.1 listen接口5.2 accept接口5.3 …...

【data】上海膜拜数据

数据初始样貌 一、数据预处理 1. 数据每5分钟栅格统计 时间数据的处理 path"mobike_shanghai.csv" dfpd.read_csv(path) # 获取时间信息&#xff0c;对于分钟信息&#xff0c;5分钟取整 def time_info(df,col): df[datetime] pd.to_datetime(df[col])df[wee…...

文件相关操作

文本文件 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放 通过文件可以将数据持久化 C的文件操作需要包含头文件 文件分类 文本文件&#xff1a;文件以文本的ASCII码形式存储在计算机中 二进制文件&#xff1a;文件以文本的二进制形式存储在计算…...

DDS(数据分发服务) 和 P2P(点对点网络) 的详细对比

1. 核心特性对比 维度 DDS P2P 实时性 微秒级延迟&#xff0c;支持硬实时&#xff08;如自动驾驶&#xff09; 毫秒至秒级&#xff0c;依赖网络环境&#xff08;如文件传输&#xff09; 架构 去中心化发布/订阅模型&#xff0c;节点自主发现 完全去中心化&#xff0c;节…...

Web 架构之攻击应急方案

文章目录 一、引言二、常见 Web 攻击类型及原理2.1 SQL 注入攻击2.2 跨站脚本攻击&#xff08;XSS&#xff09;2.3 分布式拒绝服务攻击&#xff08;DDoS&#xff09; 三、攻击检测3.1 日志分析3.2 入侵检测系统&#xff08;IDS&#xff09;/入侵防御系统&#xff08;IPS&#x…...

探索嵌入式硬件的世界:技术、应用与未来趋势

目录 一、什么是嵌入式硬件&#xff1f; 二、嵌入式硬件的核心组件与架构 1. 微处理器与控制器 2. 存储器设备 3. 输入/输出接口 4. 电源管理模块 5. 时钟芯片与时序控制 三、嵌入式硬件的设计原则与技术难点 1. 低功耗与能耗优化 2. 小型化与高度集成 3. 高可靠性和…...

【LeetCode 热题 100】动态规划 系列

&#x1f4c1; 70. 爬楼梯 状态标识&#xff1a;爬到第i层楼梯时&#xff0c;有多少种方法。 状态转移方程&#xff1a;dp[i] dp[i-1] dp[i-2]&#xff0c;表示从走一步和走两步的方式。 初始化&#xff1a;dp[1] 1 , dp[2] 2。 返回值&#xff1a;dp[n]&#xff0c;即走到…...

[特殊字符] Maven配置阿里云镜像终极指南(2024最新版)

文章目录 &#x1f31f; 为什么要配置镜像仓库&#xff1f;&#xff08;血泪教训&#xff09;&#x1f6e0;️ 准备工作&#xff08;必看&#xff01;&#xff09;&#x1f680; 三步搞定镜像配置&#xff08;抄作业版&#xff09;步骤1&#xff1a;打开settings.xml步骤2&…...

计网实验笔记(一)CS144 Lab1

Lab0 ByteStream : 实现一个在内存中的 有序可靠字节流Lab1 StreamReassembler&#xff1a;实现一个流重组器&#xff0c;一个将字节流的字串或者小段按照正确顺序来拼接回连续字节流的模块Lab2 TCPReceiver&#xff1a;实现入站字节流的TCP部分。Lab3 TCPSender&#xff1a;实…...

使用 OpenCV 将图像中标记特定颜色区域

在计算机视觉任务中&#xff0c;颜色替换是一种常见的图像处理操作&#xff0c;广泛用于视觉增强、目标高亮、伪彩色渲染等场景。本文介绍一种简单而高效的方式&#xff0c;基于 OpenCV 检测图像中接近某种颜色的区域&#xff0c;并将其替换为反色&#xff08;对比色&#xff0…...

智源联合南开大学开源Chinese-LiPS中文多模态语音识别数据集

2025年5月6日&#xff0c;智源研究院在法国巴黎举行的GOSIM全球开源创新论坛上发布Chinese-LIPS中文多模态语音识别数据集&#xff0c;该数据为智源研究院联合南开大学共同构建。 在语音识别技术飞速发展的背景下&#xff0c;多模态语音识别正逐步成为学术界和工业界的研究热点…...

RabbitMQ最新入门教程

文章目录 RabbitMQ最新入门教程1.什么是消息队列2.为什么使用消息队列3.消息队列协议4.安装Erlang5.安装RabbitMQ6.RabbitMQ核心模块7.RabbitMQ六大模式7.1 简单模式7.2 工作模式7.3 发布订阅模式7.4 路由模式7.5 主题模式7.6 RPC模式 8.RabbitMQ四种交换机8.1 直连交换机8.2 主…...

python爬虫实战训练

前言&#xff1a;哇&#xff0c;今天终于能访问豆瓣了&#xff0c;前几天爬太多次了&#xff0c;网页都不让我访问了&#xff08;要登录&#xff09;。 先来个小练习试试手吧&#xff01; 爬取豆瓣第一页&#xff08;多页同上篇文章&#xff09;所有电影的排名、电影名称、星…...

[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)

在国内服务器&#xff08;如阿里云、腾讯云&#xff09;中安装 JDK 11 时&#xff0c;可能由于访问 Oracle 官网较慢导致下载不便。本文将详细介绍如何在 CentOS 7.6 上安装 OpenJDK 11 和 Oracle JDK 11&#xff0c;并推荐使用国内镜像源加速安装过程。 &#x1f9e9; 目录 一…...

Redis(三) - 使用Java操作Redis详解

文章目录 前言一、创建项目二、导入依赖三、键操作四、字符串操作五、列表操作六、集合操作七、哈希表操作八、有序集合操作九、完整代码1. 完整代码2. 项目下载 前言 本文主要介绍如何使用 Java 操作 Redis 数据库&#xff0c;涵盖项目创建、依赖导入及 Redis 各数据类型&…...

【全网首发】解决coze工作流批量上传excel数据文档数据重复的问题

注意&#xff1a;目前方法将基于前一章批量数据库导入的修改&#xff01;&#xff01;&#xff01;&#xff01;请先阅读上篇文章的操作。抄袭注明来源 背景 上一节说的方法可以批量导入文件到数据库&#xff0c;但是无法解决已经上传的条目更新问题。简单来说&#xff0c;不…...

高效异步 TCP/UDP 服务器设计:低延迟与高吞吐量实现指南

高效异步 TCP/UDP 服务器设计:低延迟与高吞吐量实现指南 1. 引言 在现代高并发网络环境中,如何设计一个低延迟且高吞吐量的 TCP/UDP 服务器成为了关键问题。从游戏服务器、实时数据处理,到高性能 API 网关,异步编程架构的选择至关重要。 在这篇文章中,我们将深入探讨如…...