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

uniapp扫描二维码反色处理

在开发扫描二维码过程中,发现白底黑码可以直接用uni.scanCode扫描出来,但是黑底白码就扫不出来,于是就试试反色后的二维码能不能扫描出来,没想到真的可以,下面附上完整代码:

<u-icon name="scan" size="40" width="40" height="40" @click="scanCodeClick"></u-icon>
<canvas canvas-id="myCanvas" style="width: 300px; height: 400px;"></canvas>// 点击扫描
scanCodeClick() {const vm = thisuni.chooseImage({sourceType: ['camera'],count: 1,success: (res) => {const filePath = res.tempFilePaths[0];uni.getImageInfo({src: filePath,success: function(imageInfo) {const ctx = uni.createCanvasContext('myCanvas', vm);const imgUrl = filePath; // 获取拍照后的图片路径// 绘制原始图片到Canvasctx.drawImage(imgUrl, 0, 0, 300, 400);ctx.draw(false, () => {uni.canvasGetImageData({canvasId: 'myCanvas',x: 0,y: 0,width: 300,height: 400,success(res) {vm.invertColors(res)}})});}});}});},// 反色并重新绘制invertColors(info) {const dataArray = info.data;// 遍历每个像素点,进行反色处理for (let i = 0; i < dataArray.length; i += 4) {dataArray[i] = 255 - dataArray[i]; // 红色值取反dataArray[i + 1] = 255 - dataArray[i + 1]; // 绿色值取反dataArray[i + 2] = 255 - dataArray[i + 2]; // 蓝色值取反// dataArray[i + 3] 是透明度值,这里不做处理}const code = jsQR(dataArray, 300, 400);console.log(code)// return// 将处理后的图像数据重新绘制到canvas上uni.canvasPutImageData({canvasId: 'myCanvas',x: 0, // 绘制起始x坐标y: 0, // 绘制起始y坐标width: 300,height: 400,data: dataArray,success: (e) => {console.log('反色处理成功');},fail: (err) => {console.error('反色处理失败',err.errMsg ||'未知错误');},});},
http://www.dtcms.com/a/290615.html

相关文章:

  • 苍穹外卖DAY10
  • 阿里云监控及运维常见问题
  • MetaGPT源码剖析(一):MetaGPT框架下的多智能体协作项目——software_company.py
  • 安科瑞:能源微电网助力工业园区“绿色”发展
  • 数字孪生赋能智慧能源电力传输管理新模式
  • 光伏电站气象监测系统:为清洁能源高效发电保驾护航
  • Android 单编 framework 相关产物输出介绍
  • 如何在FastAPI中整合GraphQL的复杂度与限流?
  • jps用法整理
  • CSS的content属性妙用指南
  • 深度解析 HTML `loading` 属性:优化网页性能的秘密武器
  • 复习前端html,css,javascript
  • 一个适合MCU的分级菜单框架
  • 广播(Broadcast)和组播(Multicast)对比
  • docker磁盘空间不足解决办法
  • 【Qt Designer使用快捷键】
  • 【iOS】锁[特殊字符]
  • 18 零基础学webUI | Controlnet精讲(04)-图像风格转换类条件控图详解
  • 3、Spring AI_DeepSeek模型-多轮对话
  • Java在POJO中标记字段不需要被持久化到数据库,以及标记字段在对象序列化时忽略
  • 2025最新版IntelliJ IDEA Ultimate for Mac专业版安装使用指南
  • websocket和https的区别
  • 多尺度卷积模型:Inception块
  • 基于单片机儿童滞留车内防滞留系统
  • Go中的UDP编程:实战指南与使用场景
  • C语言重难点小复习(结构体/联合体/枚举)
  • 字节内部流传的数据分析手册
  • 浙江宁波,天一阁古籍资源(5262种,PDF格式,1.26T)
  • Redis的五大基本数据类型
  • Linux | C Shell 与 Bash 的差异 / 环境变量配置问题解析