图片识别二维码:为什么扫不出来,怎么提高成功率
识别失败几乎都不是解码器的问题,而是图片里没有「完整且清晰的码」。定位图案(三个角的方块)必须完整、码在画面里要够大、不能有明显的透视变形。按这三点检查,多数图片都能读出来。
六个常见原因
- 码太小:在整张照片里只占几十个像素,解码器拿不到足够的模块信息。裁掉多余背景让码占满画面。
- 定位角被裁掉:三个角的方块缺一个就定位不了。截图时留出完整边界。
- 模糊或对焦不实:手抖、近距离拍摄失焦。重拍一张,或直接用原始图片而不是翻拍。
- 反光:屏幕或铜版纸上的高光把模块糊成一片。换个角度避开光源。
- 透视变形:斜着拍,码被压成梯形。尽量正对拍摄。
- 摩尔纹:拍屏幕时出现的条纹干扰。用截图代替拍照,或降低屏幕亮度重拍。
正确的做法
如果是别人发来的图片,优先用原图,不要截图再发一遍——每一次转存都可能压缩、缩放。
如果是屏幕上显示的码,直接截图,别用手机拍屏幕。截图是无损的,拍照一定会引入摩尔纹与反光。
如果是纸质材料,正对拍摄、让码占满画面、避免闪光灯直射。
图片限制
支持 PNG、JPG/JPEG、WebP、GIF、BMP 等浏览器能解码的格式。单张上限 8MB,边长上限 4096 像素,总像素上限 1600 万,超出会直接提示而不会硬扛着处理。动图只取第一帧。
文件损坏、后缀被改过、实际不是图片,会提示无法读取而不是报错退出。
识别过程不上传图片
图片用 createImageBitmap 读入画布后交给本地脚本解码,不发出任何携带图片或识别内容的网络请求。页面只同源加载两份本地脚本,没有后端接收。
读出的内容显示在结果框里,可一键复制,也可以「填入生成」回到上方重新生成一张。关掉页面,内存里的图片与结果一起释放。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开二维码生成与识别 →常见问题
支持扫码后跳转的二维码吗?
支持。工具解码出的是二维码里的原始内容——如果内容是一个 URL,就把这段 URL 显示给你,不会自动打开(避免误点恶意链接)。
能识别带 logo 的二维码吗?
能,只要 logo 遮挡的面积在纠错能力范围内。遮挡比例接近纠错等级上限时,识别率会明显下降;如果失败,去掉 logo 或换一张更清晰的图。
为什么同一个码,别的 App 能扫出来这里不行?
不同解码器的容错策略不同。这个工具在图片质量边缘时偏保守,避免给出错误内容;遇到这种情况先按上面六条改善图片质量,通常就能读出来。