相机和屏幕朝着相反的方向
显示代码的手机,正是你要拿去对准它的那部手机,而主摄像头朝的是后面。任何设置都掉转不了这一点。
第二部手机,仍然是一台对着屏幕的相机
屏幕是一张像素网格,相机传感器是另一张网格。用后者去拍前者,画面上就会浮起一道道重复的条纹。
关于那些条纹,有两点和直觉相反。屏幕越暗越严重,因为暗下来的显示屏,像素熄灭的时间更长。房间越亮又更严重,因为曝光时间短,来不及把闪烁平均掉。
可能根本没有一个合适的距离
手机主摄的最近对焦距离大约在几厘米。为了多拿些像素凑近,画面就虚了;退开到能合焦,代码又小得解不出来。
手机自己本来就能做的事
两个平台本来就能从图片里读出代码,而且都没怎么声张。
在 iOS 上,在“照片”里长按代码
在“照片”里打开图片,长按代码,手机就会把找到的内容递给你。前提是先打开“实况文本”,位置在“设置”→“通用”→“语言与地区”,而且它并非在所有地区和语言下都可用。
这项能力是在 iOS 16 出现的,不是 iOS 15;iOS 15 带来的是用于普通文字的“实况文本”。Apple 从未把这条路写进文档。它关于扫描二维码的说明只讲了相机,以及一个需要你自己添加的控制中心控件,从没讲过已保存的照片。
在 Android 上,就地把代码圈起来
“圈选搜索”正是为屏幕上已有的代码准备的一条路。长按主页键或导航条,然后把代码圈起来。它能读出邮件、PDF、照片或视频里的代码。
它需要 Google 应用,并且把 Google 设为助理。Android 17 的其余方式都依赖实时相机,包括 Pixel 相机应用,而后者在人像模式和视频模式下不会扫描。各家厂商的系统界面各不相同。
视觉智能不是干这件事的工具
在 iOS 26 里,它对屏幕上的任何内容都能用,听上去正合适。其实不然。它做的事情没有一项涉及二维码或条形码;它需要 iPhone 15 Pro 或更新的机型;而且只有十六种语言,还是测试版。
这些路走到哪儿就停下了
底层的引擎读得了一维条形码,但上面那层按钮却默认它是个链接:两个平台给出的每一个操作,都是“打开这个网站”的某种变体。而一张商店卡就是普通的 EAN-13,里面根本没有网址。
还有一些内容根本不是链接。Wi-Fi 凭据是一段字符串;eSIM 激活码也是,而 iPhone 通过相机会对它作出反应,从“照片”里则不会。
而且什么都没留下。你点了链接,面板收起,下个星期你又在翻同一张截图。Apple Wallet 帮不上忙,因为通行证必须由商家签发并签名: Apple Wallet 与 Google Wallet 中的卡片
这正是这个应用存在的全部理由:作为卡片保存下来的代码,你第二次需要它时它还在,不用四处翻找。ScanKeeper 在 iOS 和 Android 上都免费。
图片读不出来的时候
每个模块约三个像素
二维码是一张模块网格,模块就是构成它的那些小方块。每个模块约占三个像素时,解码才算可靠;两个像素是标准里写明的下限,不是目标。
所以一个二十五个模块宽的代码,横向大约需要七十五个像素;而九十五个单元宽的 EAN-13,横向至少需要一百九十个。
空白边距也是代码的一部分
把图裁得太紧,是把一个原本好好的代码弄坏的最常见方式。二维码四边都需要留出四个模块宽的空白。EAN-13 左侧要留十一个模块宽,右侧要留七个,所以裁掉左边的代价更大。
对比度,以及那个三成的传言
白底浅灰直接通不过分级标准,而代码背后垫一张照片或一层渐变,会把对比度一个模块一个模块地毁掉。浅底深色才靠得住。
传说二维码能损失三成,那是码字的比例,不是面积的比例,而且三个角上的方块根本不在保护范围内。中间放个 logo 没事;拇指压住一个角就不行。
一维码完全没有纠错能力。校验位能发现错误,却修不了错误,所以一道横在条纹上的反光,二维码耸耸肩就过去了,一维码却会因此报废。
什么都读不出来的时候
图片没救了的时候,代码下面那串数值通常还有救。
使用相机、导入图片或手动输入值。三种方式都会创建同样可编辑的卡片。
如果图库里堆了一大批,还有更快的一条路: 批量导入
图片里的代码,不是每个都值得留
照片图库不用谁吩咐,就把这些攒了下来。
值得起个名字的那些
任何以后还会被要一次的东西:邮件里的会员条形码、健身房或图书馆的号码、派送通知里的取件码、印着日期的优惠券。
图片装不住的那些
会轮换的票券条形码每十五秒刷新一次,它的截图过不了闸口。如果一个代码在动,或者在倒计时,那张图片就没有价值。保存下来的代码能管多久,是另一个话题: 条形码整理工具
怎样从截图或已保存的照片里扫描二维码
- 01
打开扫描器,用图库选项
在卡库里点击扫描按钮,再点顶部的照片控件。没有什么需要对准,也没有什么拦着你一次选好几张图片。

选择同一手机上的现有图片。 - 02
看看读回来的是什么
ScanKeeper 在设备上读取图片,把识别出的格式和解出的数值并排显示。

检查识别出的类型和编码值。 - 03
把它存成一张卡片
起一个你会说出口的名字,然后保存。卡片会记住数值和格式。

一个月之后,名字胜过一串数字。 - 04
不靠那张图片,再打开一次
一张保存下来的卡片会显示代码、带复制按钮的数值、格式,以及你打开过它多少次。

解出来的数值,随时可以复制。
保存下来的代码能做到、而图片做不到的事
无需第二部手机
分析同一设备上邮件、消息、PDF 截图或已保存照片中的代码。
设备端识别
图片扫描在本地完成,不会将条码发送到 ScanKeeper 服务器。
一个数值,不只是一个链接
不含网址的代码,读回来的是一个你能看、能复制的数值。
开始前须知
可以扫描同一手机截图中的二维码吗?
可以,而且你可能连保存都不用。直接从图片所在的那个应用把它共享给 ScanKeeper,或者先保存下来,之后再用图库选项挑出它。两条路都不需要第二台设备。
为什么相机读得出这个代码,保存下来的照片却读不出?
实时相机有很多次机会,可以移动、重新对焦、换个角度,直到某一帧解出来。一张保存下来的图片只有一次机会,画质就是拍下时的那样。
ScanKeeper 能从照片读取二维码和条形码吗?
可以。ScanKeeper 支持 QR、EAN、UPC、Code 128、PDF417、Data Matrix 和 Aztec 等图片格式。
可以读取 PDF 里的二维码吗?
直接交 PDF,不要交它的截图。它的页面会在设备上绘制成图片,再像其他图片一样读取,这样代码保持原本大小,而不是被定格在你当时的缩放比例上。
要是图片里不止一个代码呢?
它们会挨个呈到你面前,当前那个亮着,照片其余部分变暗。一封同时带着门票码和休息室通行证的确认邮件会把两个都给你,不想要的那个可以“跳过”。
活动门票的截图能让我过闸口吗?
多半不行。每隔几秒就刷新一次的条形码,设计上就是要让静止的图片一文不值,而且有些票务应用干脆禁止截图。
要是这张图片根本没人读得出来呢?
手动输入。条形码下面印的号码就是这个代码,选对格式手动录入,做出来的卡片和扫描出来的一模一样。
图片扫描需要联网吗?
不需要。图片分析在设备上运行,无需账户或网络。

