当前位置: 首页 > 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.lryc.cn/news/582281.html

相关文章:

  • C#和SQL Server连接常用通讯方式
  • 基于4.14 kernel ARM V7 单核cpu swi功能的验证方法
  • kong网关基于header分流灰度发布
  • 揭秘图像LLM:从像素到语言的智能转换
  • ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
  • 【K线训练软件研发历程】【日常记录向】1.K线滑动窗口
  • 【数据结构】第七弹——Priority Queue
  • Kafka 消费者组再平衡优化实践指南
  • 赛事开启|第三届视觉语音识别挑战赛 CNVSRC 2025 启动
  • RedisTemplate在Spring Boot中的五种数据结构全面详解
  • 电脑电压过高的影响与风险分析
  • 【Java安全】反射基础
  • ARMv7单核CPU上SWI(软件中断)验证
  • 前端面试专栏-算法篇:20. 贪心算法与动态规划入门
  • SQL Server表分区技术详解
  • 瑞斯拜考研词汇课笔记
  • 基于Java+SpringBoot 的销售项目流程化管理系统
  • 深度学习机器学习比较
  • 【ROS2 自动驾驶学习】02-安装ROS2及其配套工具
  • Java 内存分析工具 Arthas
  • 卷积神经网络:卷积层的核心原理与机制
  • MATLAB | 绘图复刻(二十一)| 扇形热图+小提琴图
  • Spring AOP 设计解密:代理对象生成、拦截器链调度与注解适配全流程源码解析
  • 网络安全之重放攻击:原理、危害与防御之道
  • 指尖上的魔法:优雅高效的Linux命令手册
  • Spring Boot 操作 Redis 时 KeySerializer 和 HashKeySerializer 有什么区别?
  • 自动驾驶基本结构与组成
  • 【MyBatis】XML实现,配置方法和增、删、改、查
  • 第二届云计算与大数据国际学术会议(ICCBD 2025)
  • 物联网技术的关键技术与区块链发展趋势的深度融合分析