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

小程序实现二维码图片Buffer下载

业务场景:小程序端生成小程序二维码(官方api生成是图片buffer格式),然后对此图片进行下载分享等操作

  1. 安装buffer
npm install buffer
  1. wxQrcode.js
let Buffer = require("../miniprogram/miniprogram_npm/buffer/index").Buffer
const {request
} = require('./index')  // 这里是我封装的wx.request请求接口// 分享卡片
export function getQrcode(dataInfo) {// 重点是responseType设置为arraybufferrequest(dataInfo, true, true, '加载中...', 2000, 'arraybuffer').then((res) => {console.log(res)}).catch(data => {if (data.byteLength < 100) {Toast('二维码获取失败,请重试')return}const imgBuffer = new Buffer.from(data);const imgBase64 = imgBuffer.toString('base64').replace(/[\r\n]/g, "")const dataImagePrefix = `data:image/jpeg;base64,`const qrCodeImg = `${dataImagePrefix}${imgBase64}`doShare(qrCodeImg)})
}// 执行分享
export function doShare(base64Data) {wx.showLoading({title: '准备分享中...'});const tempFilePath = base64ToTempPath(base64Data);if (!tempFilePath) {wx.hideLoading();wx.showToast({title: '图片处理失败',icon: 'none'});return;}wx.showShareImageMenu({path: tempFilePath,success: () => {wx.hideLoading();},fail: (err) => {wx.hideLoading();}});
}// base64转临时路径
export function base64ToTempPath(base64Data) {try {const imageData = base64Data.replace(/^data:image\/\w+;base64,/, "");const timestamp = new Date().getTime();const filePath = `${wx.env.USER_DATA_PATH}/share_${timestamp}.png`;const fs = wx.getFileSystemManager();fs.writeFileSync(filePath, imageData, 'base64');return filePath;} catch (error) {console.error('base64转临时路径失败:', error);return null;}
}module.exports = {getQrcode
}
http://www.dtcms.com/a/321834.html

相关文章:

  • C#结合HALCON去除ROI选中效果的实现方法
  • django uwsgi启动报错failed to get the Python codec of the filesystem encoding
  • 如何永久删除三星手机中的照片?
  • Nestjs框架: 接口安全与响应脱敏实践 --- 从拦截器到自定义序列化装饰器
  • Charles中文版抓包工具功能解析,提升API调试与网络性能优化
  • Redis原理,命令,协议以及异步方式
  • 【数字投影】艺术视觉在展厅中的多维传达与设计创新
  • 【MySQL】初识索引
  • 51c视觉~合集16
  • 批量把在线网络JSON文件(URL)转换成Excel工具 JSON to Excel by WTSolutions
  • NOIP 2024 游记
  • 不同的子序列-二维动态规划
  • GeeLark 7月功能更新回顾
  • 【补题】Codeforces Round 776 (Div. 3) E. Rescheduling the Exam
  • 三方相机问题分析七:【datespace导致GPU异常】三方黑块和花图问题
  • 显示器同步技术终极之战:G-Sync VS. FreeSync
  • xml 格式化
  • 卷板矫平机:把“翘脾气”的金属板材变平整
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘huggingface_hub’问题
  • C# 装箱拆箱
  • 数据结构进阶 详谈红黑树
  • Redis(⑤-线程池隔离)
  • javaSE(基础):5.抽象类和接口
  • C+++——内存管理
  • 大语言模型提示工程与应用:提示工程入门指南
  • 前端后端之争?JavaScript和Java的特性与应用场景解析
  • 大型语言模型幻觉检测与缓解技术研究综述
  • 将Django项目部署到Vercel平台的完整指南
  • Spring Boot 常用注解及其功能详解
  • Numpy科学计算与数据分析:Numpy高效数据处理与优化