从手机里已有的图片扫描二维码。

代码是以图片的形式来的:一张邮件截图、别人发来的照片、你保存下来的页面。相机朝向屏幕的反面,帮不上忙。下面是手机本身已经能做的事,以及图片读不出来时该怎么办。

相机和屏幕朝着相反的方向

显示代码的手机,正是你要拿去对准它的那部手机,而主摄像头朝的是后面。任何设置都掉转不了这一点。

第二部手机,仍然是一台对着屏幕的相机

屏幕是一张像素网格,相机传感器是另一张网格。用后者去拍前者,画面上就会浮起一道道重复的条纹。

关于那些条纹,有两点和直觉相反。屏幕越暗越严重,因为暗下来的显示屏,像素熄灭的时间更长。房间越亮又更严重,因为曝光时间短,来不及把闪烁平均掉。

可能根本没有一个合适的距离

手机主摄的最近对焦距离大约在几厘米。为了多拿些像素凑近,画面就虚了;退开到能合焦,代码又小得解不出来。

手机自己本来就能做的事

两个平台本来就能从图片里读出代码,而且都没怎么声张。

在 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 上都免费。

最短的那条路,根本不保存图片

到这里为止的每条路,前提都是图片已经存在某个地方:在你的图库里,在你留下的文件里。可大多数代码不是这样来的。它们藏在别的东西里——一封邮件、一段聊天、一封订单确认、一个你正开着的页面——而先存一份副本,只是因为工具要你这么做才多出来的一步。

那就别存。装着这张图片的应用总有一个共享按钮,而 ScanKeeper 就排在那份列表里,紧挨着那些聊天应用。

iOS 共享面板盖在一封优惠券邮件的截图上,可选应用中有 ScanKeeper
就是你平时发给别人时用的那一排。

在 iOS 上,命名不用离开当前应用

一个面板会盖在你正在读的东西上面:图片里代码亮着,其余部分变暗,一个填名称的输入框,还有“保存”。然后面板收起,你回到那封邮件。ScanKeeper 始终没有打开,这不是花哨的设计——iOS 不允许共享扩展打开自己的应用,所以它能就地办完的事,都会就地办完。

如果一张照片里有好几个代码,它们会挨个轮到,带一个计数器,不想要的可以“跳过”。用叉号关掉是放弃而不是推迟:还没保存的都会被丢掉,下次打开应用时不会有东西等着你。

在 Android 上,应用会打开,做同样的事

Android 上没有对应的面板,所以 ScanKeeper 会切到前台,显示你从“操作”进去也会看到的那个导入页面。结果完全一样,路径多一屏。如果你两种手机都用过,并以为它们表现相同,这一点值得知道。

门票可以直接以 PDF 的形式传过去

附件不必在半路上先变成一张截图。直接发送文件本身,它的页面会在设备上绘制成图片,再像其他图片一样读取——这就是原本大小的代码和被定格在当时缩放比例上的代码之间的差别。

这几条路都不会动原件。传过来的东西会被复制一份,读的是副本,读完副本就丢掉——不会有任何东西写回你的图库、你的邮件或你的文件。

图片读不出来的时候

每个模块约三个像素

二维码是一张模块网格,模块就是构成它的那些小方块。每个模块约占三个像素时,解码才算可靠;两个像素是标准里写明的下限,不是目标。

所以一个二十五个模块宽的代码,横向大约需要七十五个像素;而九十五个单元宽的 EAN-13,横向至少需要一百九十个。

空白边距也是代码的一部分

把图裁得太紧,是把一个原本好好的代码弄坏的最常见方式。二维码四边都需要留出四个模块宽的空白。EAN-13 左侧要留十一个模块宽,右侧要留七个,所以裁掉左边的代价更大。

对比度,以及那个三成的传言

白底浅灰直接通不过分级标准,而代码背后垫一张照片或一层渐变,会把对比度一个模块一个模块地毁掉。浅底深色才靠得住。

传说二维码能损失三成,那是码字的比例,不是面积的比例,而且三个角上的方块根本不在保护范围内。中间放个 logo 没事;拇指压住一个角就不行。

一维码完全没有纠错能力。校验位能发现错误,却修不了错误,所以一道横在条纹上的反光,二维码耸耸肩就过去了,一维码却会因此报废。

什么都读不出来的时候

图片没救了的时候,代码下面那串数值通常还有救。

使用相机、导入图片或手动输入值。三种方式都会创建同样可编辑的卡片。

如果图库里堆了一大批,还有更快的一条路: 批量导入

图片里的代码,不是每个都值得留

照片图库不用谁吩咐,就把这些攒了下来。

值得起个名字的那些

任何以后还会被要一次的东西:邮件里的会员条形码、健身房或图书馆的号码、派送通知里的取件码、印着日期的优惠券。

图片装不住的那些

会轮换的票券条形码每十五秒刷新一次,它的截图过不了闸口。如果一个代码在动,或者在倒计时,那张图片就没有价值。保存下来的代码能管多久,是另一个话题: 条形码整理工具

怎样从截图或已保存的照片里扫描二维码

  1. 01

    打开扫描器,用图库选项

    在卡库里点击扫描按钮,再点顶部的照片控件。没有什么需要对准,也没有什么拦着你一次选好几张图片。

    显示印刷条码并带图库和批量导入控件的相机扫描器
    选择同一手机上的现有图片。
  2. 02

    看看读回来的是什么

    ScanKeeper 在设备上读取图片,把识别出的格式和解出的数值并排显示。

    显示已识别 EAN-13 值和卡片名称的新建条码表单
    检查识别出的类型和编码值。
  3. 03

    把它存成一张卡片

    起一个你会说出口的名字,然后保存。卡片会记住数值和格式。

    显示已识别 EAN-13 值和卡片名称的新建条码表单
    一个月之后,名字胜过一串数字。
  4. 04

    不靠那张图片,再打开一次

    一张保存下来的卡片会显示代码、带复制按钮的数值、格式,以及你打开过它多少次。

    A saved ScanKeeper card showing its barcode, encoded value, and format
    解出来的数值,随时可以复制。

保存下来的代码能做到、而图片做不到的事

无需第二部手机

分析同一设备上邮件、消息、PDF 截图或已保存照片中的代码。

设备端识别

图片扫描在本地完成,不会将条码发送到 ScanKeeper 服务器。

一个数值,不只是一个链接

不含网址的代码,读回来的是一个你能看、能复制的数值。

开始前须知

可以扫描同一手机截图中的二维码吗?

可以,而且你可能连保存都不用。直接从图片所在的那个应用把它共享给 ScanKeeper,或者先保存下来,之后再用图库选项挑出它。两条路都不需要第二台设备。

为什么相机读得出这个代码,保存下来的照片却读不出?

实时相机有很多次机会,可以移动、重新对焦、换个角度,直到某一帧解出来。一张保存下来的图片只有一次机会,画质就是拍下时的那样。

ScanKeeper 能从照片读取二维码和条形码吗?

可以。ScanKeeper 支持 QR、EAN、UPC、Code 128、PDF417、Data Matrix 和 Aztec 等图片格式。

可以读取 PDF 里的二维码吗?

直接交 PDF,不要交它的截图。它的页面会在设备上绘制成图片,再像其他图片一样读取,这样代码保持原本大小,而不是被定格在你当时的缩放比例上。

要是图片里不止一个代码呢?

它们会挨个呈到你面前,当前那个亮着,照片其余部分变暗。一封同时带着门票码和休息室通行证的确认邮件会把两个都给你,不想要的那个可以“跳过”。

活动门票的截图能让我过闸口吗?

多半不行。每隔几秒就刷新一次的条形码,设计上就是要让静止的图片一文不值,而且有些票务应用干脆禁止截图。

要是这张图片根本没人读得出来呢?

手动输入。条形码下面印的号码就是这个代码,选对格式手动录入,做出来的卡片和扫描出来的一模一样。

图片扫描需要联网吗?

不需要。图片分析在设备上运行,无需账户或网络。

获取应用

不注册,不留邮箱,不设密码。装好应用就能开始添加卡片。

在 App Store 下载在 Google Play 获取
或者用手机相机对着这里,让它读出代码。