ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

uni-app 二维码生成页面开源:复制即用,仅依赖 qrcode-generator

uni-app 二维码生成页面开源:复制即用,仅依赖 qrcode-generator 配套解析页扫码 / 识图CSDN 文章uni-app 二维码解析页面开源该生成组件提取自作者本人的LK工具箱一个 uni-app 跨端工具集已在生产环境使用本文仅抽取通用部分开源。 项目简介一个自包含、零业务依赖的二维码生成页面复制到任意 uni-app 项目即可用。输入文本 / 链接 / 中文 / emoji →本地生成高清二维码支持换色、一键保存到相册、深链预填与页面分享。✨ 功能特性功能说明文本生成textarea输入任意文本 / 链接 / 中文 / emoji一键生成二维码码色切换8 种预设前景色黑 / 深灰 / 藏青 / 墨绿 / 紫 / 深蓝 / 暗红 / 棕白底保存到相册canvasToTempFilePath导出物理像素高清图 → 保存相册含授权失败引导深链预填支持?text参数进入页面自动预填内容页面分享onShareAppMessage内置标题「二维码生成」路径动态取当前路由 界面预览左初始状态输入文本 选色右生成结果高清二维码 保存到相册。 依赖唯一外部依赖qrcode-generatornpm i qrcode-generator本页面已把生成所需的 JS 逻辑全部内联复制到任意 uni-app 项目即可使用。 快速接入1. 安装依赖npm i qrcode-generator2. 复制文件将generator.vue复制到目标项目的页面目录例如src/pages/qrcode/generate.vue。3. 注册路由在目标项目的pages.json中注册{ pages: [ { path: pages/qrcode/generate, style: { navigationBarTitleText: 二维码生成 } } ] }4. 可选深链预填从其他页面跳转并携带待生成内容uni.navigateTo({ url: /pages/qrcode/generate?text encodeURIComponent(text) })页面onLoad会自动decodeURIComponent后填入输入框仍需点击「生成二维码」出码。 完整源码与示例见仓库https://gitee.com/Free4K/qr_generate 生成原理生成流程onGenerate→generateQRCodegenText 输入 选色 ↓ checkText 内容审核可选本文件已留接入位默认关闭 ↓ textToBytesencodeURIComponent → Latin-1 串即 UTF-8 字节 ↓ qrcode-generatortypeNumber0 自动选最小可容纳版本 纠错级别 M ↓ getModuleCount 取模块数超过 73≈版本 14直接拒绝「内容过长」 ↓ 计算静默区(4) cellSizefloor(260/(模块数8)) 画布尺寸 ↓ 获取 Canvas 2D 节点带 200ms 重试应对 v-show 切换后节点未就绪 ↓ ctx.scale(dpr) 高清绘制白底 逐模块 fillRect 黑块 ↓ canvasToTempFilePath不传宽高→ 按物理像素导出 → 保存相册画布id固定为qr-generatorcellSize用floor因此不同内容长度生成的图片像素尺寸会浮动目标上限 260px模块越多图越小、越清晰可控。主要函数函数作用textToBytes(text)UTF-8 字符串 → Latin-1 字节串保障中文 / emoji 正确编码createQRInstance(text)建 QR 实例自动版本 M 纠错getCanvas2dNode(id)获取 Canvas 2D 节点getCanvas2dNodeWithRetry(id, retries)带重试的节点获取应对节点未就绪generateQRCode(text, id, options)文本 → 在 canvas 绘制二维码核心guideToAlbumSetting()相册授权失败引导去设置带防抖saveImageToAlbum(path)保存图片到相册saveCanvasToAlbum(id)导出 canvas 为图片并保存onGenerate()生成入口saveCanvas()保存入口buildShare()构建分享配置脱品牌onLoad(options)处理?text预填参数onShareAppMessage()页面分享⚠️ 注意事项相册隐私声明saveImageToAlbum使用了uni.saveImageToPhotosAlbum需在微信后台「用户隐私保护指引」中声明「保存到相册」权限否则可能弹授权或被拦截。Canvas 2D 要求基础库需 ≥ 2.9.0Canvas 2D API。多端兼容生成逻辑基于标准 Canvas API qrcode-generator微信 / 支付宝 / 百度等多端均可使用仅需目标项目安装了qrcode-generator。编码对称性生成端用textToBytes做 UTF-8 编码与解析端jsQR≥1.4/uni.scanCode解码对称中文不乱码。内容审核原项目通过checkTextsecurity.js在生成前做内容审核本文件已移除并在onGenerate内留注释接入位目标项目可自行接入。「最近使用」记录原项目通过setRecent记录到本地 storage本文件已移除目标项目可自行接入。源码核心生成逻辑已在本文完整给出。完整源码与示例见仓库https://gitee.com/Free4K/qr_generate
返回列表