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

uniapp三步完成生成一维码图片

关于uniapp生成一维码图片

步骤

  1. 生成一维码的base64字符串
  2. 将base64转为图片
  3. 绘制图片

实现

生成一维码的base64字符串

const bwipjs = require('@bwip-js/node')
/*** 生成一维码的base64字符串* @param {string} data 一维码的数据* @returns {Promise<string>} base64*/
export const generateBase64 = async (data = '1234567890') => {const png = await bwipjs.toBuffer({bcid: 'code128',text: data,scale: 3,height: 10,width: 70,includetext: true})return `data:image/png;base64,${png.toString('base64')}`
}

将base64转为图片

/*** 将base64转为图片* @param {string} code* @returns {Promise<string>}*/function base64ToImage(code) {return new Promise((resolve, reject) => {// 原生html5+apiconst bitmap = new plus.nativeObj.Bitmap('tempBitmap')// 加载 base64 数据bitmap.loadBase64Data(code,function () {// 将生成的临时图片保存起来bitmap.save('_www/bimap/temp.png',{},(result) => {resolve(result.target)bitmap.clear()},reject)},reject)})},

使用canvas绘制生成的图片

/*** 绘制标签* @param {string} imgPath 条形码base64* @param {object} data 商品信息*/handleDraw() {return new Promise((resolve, reject) => {// 生成canvas上下文const ctx = uni.createCanvasContext(this.canvasPrintId, this)this.drawImage(ctx, this.printStyle)// 2. 渲染并在回调中导出为 base64ctx.draw(false, () => {// 一定要在 draw 回调中调用 canvasToTempFilePathuni.canvasToTempFilePath({canvasId: this.canvasPrintId,success: (res) => {// 将画好的图片转为base64字符串plus.io.resolveLocalFileSystemURL(res.tempFilePath,(entry) => {entry.file((file) => {const reader = new plus.io.FileReader()reader.onloadend = (e) => {resolve(e.target.result) // 返回 base64: data:image/png;base64,...}reader.readAsDataURL(file) // 读取为 base64}, reject)},reject)},fail: reject},this)})})}
http://www.dtcms.com/a/268869.html

相关文章:

  • 在linux 上使用tcpdump监听http 端口的报文并分析
  • 部署NextCloud AIO + Frp + nginx-proxy-manager内网穿透私有云服务
  • [免费]基于Python豆瓣电影数据分析及可视化系统(Flask+echarts+pandas)【论文+源码+SQL脚本】
  • WebView安全实现(一)
  • 「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程
  • Linux系统从入门到精通!第四天(shell编程和Docker)
  • 雪豹速清:智能清理,释放手机空间
  • 操作系统级TCP性能优化:高并发场景下的内核参数调优实践
  • 【机器学习笔记 Ⅲ】4 特征选择
  • WebDAV与内网穿透的协同创新:Joplin私有云同步架构深度解析
  • 【Linux系统】Linux权限 | Shell命令以及运行原理
  • 【Java安全】反射基础
  • (倍增)洛谷 P1613 跑路/P4155 国旗计划
  • VBA之Word应用第三章第十一节:Document对象的事件
  • 图像采集卡选型详细指南
  • SAP HANA内存数据库解析:特性、优势与应用场景 | 技术指南
  • OceanBase在.NET开发操作指南
  • 5、Receiving Messages:Message Listener Containers
  • 【Note】《Kafka: The Definitive Guide》第7章 Building Data Pipelines
  • 【牛客刷题】实现返回最大的不大于n的完美数的函数
  • [NOIP][C++]洛谷P1035 [NOIP 2002 普及组] 级数求和
  • 牛客周赛 Round 99 EF
  • 【PTA数据结构 | C语言版】求两个正整数的最大公约数
  • Camera相机人脸识别系列专题分析之十六:人脸特征检测FFD算法之libcvface_api.so数据结构详细注释解析
  • 芯谷科技--高性能双通道音频功率放大器D7050
  • LabVIEW与FPGA超声探伤
  • 单细胞数据格式转换:rds 与 h5ad互转
  • 倒排索引(Inverted Index)深度解析
  • uniapp跳转页面时如何带对象参数
  • 后端微服务基础架构Spring Cloud