1 挑码的种类
二维码什么都装得下,也是手机摄像头默认要找的东西。条形码装的是一串数字,而且要哪一种,通常轮不到你决定,商店、仓库或者货运公司要什么就是什么。
2 说清楚码里装什么
这个码里将要装的那串字符
3 决定它长什么样
留白是码的一部分,不是码周围的空地。规范要的是四个模块,一个被裁到边的码,很多扫描器根本看不见。
在下面印出字符 扫描器读不出来的时候,得靠人来读。零售条码上还有几位数字落在留白里,那是故意的,它们标出了谁都不该裁掉的那片空白。
加一位校验字符 Code 39 一般不带这个。有些系统非要不可,只有你那套确实要,才加上,因为不期待它的读取器会把它当成末尾多出来的一个字符。
干脆不要背景 透明,用来放在本来就有颜色的东西上。SVG 和 PNG 都保住透明。不过最后垫在它后面的那层得是浅色,否则扫描器根本量不到对比。
4 拿走
该留着的是 SVG。它是以指令表达的码,不是一堆像素,印多大都不发虚。这一点在这儿比在别的图片上更要紧,因为发虚的边缘正是扫描器分辨不了的东西。
# 二维码与条形码 离线生成二维码和条码 打进去,就变成一个码。生成过程不往外送任何东西。 > 生成链接、Wi-Fi 或者名片二维码,也生成 EAN-13、UPC-A、Code 128 和 Code 39 条形码。可下载 SVG 或 PNG。全部在你的浏览器里完成。 这是一个浏览器交互工具,地址是 https://abox.tools/zh/qr-barcode/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明;使用工具请打开该地址。 ## 你的码和码里的文字**在浏览器里处理**,无须上传处理。 二维码不过是对一串字符做算术,没有文件要送,也没有服务要求人。选模式、定版本、算里德所罗门纠错、挑掩码、排条码的粗细条、算下面那位校验码,每一步都发生在这个页面里,一千来行你能读的 JavaScript。这个工具没有任何联网功能。这一条在这儿比在别的页面更要紧,因为被编进码里的,常常是一个 Wi-Fi 密码。 - ✗ 不上传 - ✗ 不注册 - ✗ 不过期 - ✓ 断网能用 - ✓ 开源 ## 不上传怎么生成二维码 1. **先挑码的种类。** 二维码什么都装得下,也是手机摄像头默认要找的东西,所以除非有人另有要求,答案就是它。条形码装的是一串数字,具体要哪一种,由将来扫它的那一方说了算:商店要 EAN-13 或者 UPC-A,运输纸箱要 ITF-14,公司内部用的一般是 Code 128。 2. **说清楚码里装什么。** 最常见的是一个链接,上面那几个表单则负责拼出手机认得的其他格式:一个能自动加入的 Wi-Fi、一张能提示保存的名片、一封邮件、一条短信、一个电话号码、一个地图位置。不管你选哪个,拼好的那串字符都会显示在页面上,因为二维码里装的从来就只有它。 3. **决定它能挨多少损伤。** 四个等级放进去的纠错数据一档比一档多,而纠错越多,码就越大越密。屏幕上看 L 就够,普通纸张用 M,要被反复摸、印得很小、或者贴在晒得到太阳的橱窗上,用 H。菜单上那种每天要擦一遍的码,值得上 Q 或者 H。 4. **定尺寸、留白和颜色。** 留白是码的一部分。规范要求四边各留四个模块的空白,把它裁掉,是印出来的码扫不出来最常见的单一原因。深色在浅色上,而且对比要真够:读取器量的是两者之差,所以白底浅灰不行,浅色在深底上更是有相当多的读取器直接不认。 5. **拿你手上这部手机试一下。** 印一千份之前,先扫屏幕上这个。十秒钟的事,却能挡住一整类预览看不出来的毛病:Wi-Fi 密码里有个字符本该转义、链接漏了 `https://`、条码数字少了一位。 6. **拿 SVG。** 它是以指令表达的码,不是一堆像素,所以印多大都不发虚,而发虚的边缘正是扫描器最分辨不了的东西。你要粘进去的地方要是不认 SVG,那就顺手也拿上 PNG,它按每个模块整数个像素画出来,同样没有糊掉的边。 ## 说得更细的版本 [怎么做一个到了别人手机上还扫得出来的二维码](https://abox.tools/zh/guides/make-a-qr-code/): 纠错等级该选哪个,二维码周围那圈白为什么是码的一部分,印多大合适,还有免费生成器的“动态码”日后要你付出什么。 ## 工具箱里还有 - [二维码与条形码识读](https://abox.tools/zh/qr-barcode-reader/): 把摄像头对准码,或者把拍下来的图丢进来。读这件事只发生在这里,别处都没有。 - [哈希与校验和](https://abox.tools/zh/hash-checksum/): 把下载来的文件和发布方公布的那串数字对一下,不用把它发给任何人。 - [密码与密码短语生成器](https://abox.tools/zh/password-generator/): 在这里生成,由你自己的浏览器生成,不发往任何地方。什么都不保存,也没有历史记录。 - [JSON 格式化](https://abox.tools/zh/json-formatter/): JSON、XML、HTML、CSS 和 YAML,格式化或转换。没有一个字被贴进别人的服务器。 ## 常见问题 ### 我打进去的东西会被发到什么地方吗? 不会。二维码就是对一串字符做算术,而这套算术在你自己的浏览器里、你自己的机器上跑。这个工具没有任何联网功能,不取东西,也不发东西。页面的 `Content-Security-Policy` 把它可能联的地址全列了出来,没有一个是本站的。这一点在这儿比在别的页面更值钱,因为人们最常塞进二维码的,就是自家 Wi-Fi 的密码。 ### 这些码会过期吗?会哪天突然失效吗? 不会,也不可能。你打进去什么,码里就装什么,扫出来永远是那串字符。会过期的是那种里面装着别人地址的码:所谓“动态”二维码,装的是通往生成方服务器的链接,再由那边跳到你这儿。于是他们能数走每一次扫描,能改目的地,也能在试用期结束那天把它关掉。这里没有任何东西经别人中转。 ### 免费吗?能商用吗? 免费,没有账号,没有水印,生成多少个都不限,结果放到产品上、海报上、店面上都行。QR Code 是电装(Denso Wave)的注册商标,他们公开表示不会对使用这种码的人主张这项商标,规范以 ISO/IEC 18004 公开发布,任何人都可以自由实现,这个页面做的就是这件事。本站带广告,经费就是这么来的。 ### 纠错等级该选哪个? 没有特别理由就选 M。L 生成的码最小,屏幕上完全够用;M 扛得住日常翻动;Q 和 H 留给那些要印得很小、要过塑、要贴橱窗、或者中间会被 logo 盖住一块的码。每往上一档,塞进去的校验数据就多一些,同样多的文字就需要一个更大的图形,从 L 换到 H,同一串字符的模块数大约要翻一倍。 ### 一个二维码能装多少东西? 最大那一档是 177 × 177 个模块,最多装 7089 位数字、4296 个大写字母和数字,或者 2953 字节的其他内容,而这还是在最弱纠错下的数字,最强纠错大约只有三分之一。实际上卡住你的不是格式,是扫描器:过了几百个字符,模块就小到普通手机摄像头在一臂之外分辨不出来了。码一长,通常说明里面该换成一个短链接。 ### 链接改成小写,码怎么反而变大了? 因为二维码有一种专门装大写字母和数字的模式,两个字符压进十一位;小写没有这种模式,一个字符要八位。同一个网址写成 `HTTPS://EXAMPLE.COM/PAGE`,可以比小写版本小三分之一。协议名和主机名本来就不区分大小写,喊成大写除了变小什么都不影响;主机后面那段路径可是区分的,别去动它。 ### 它能扫码吗,还是只能生成? 这一页做不到,隔壁那页可以:[识读工具](https://abox.tools/zh/qr-barcode-reader/)接一张照片、一张截图或者你的摄像头,把里面那串字符还给你。这比画一个码大得多——在一张图里找出那个图形、把拍摄角度纠正回来、再把破损的地方修回来,这三件事这一页压根不用面对——所以它是一个单独的工具,而不是这里的一个按钮。它按这里一贯的规矩来:什么都不上传,摄像头的画面也一帧不留。 ### 留白是干什么的,能不能少留点? 二维码周围那圈白不是装饰,是码的一部分。读取器靠它判断这个图形在哪儿结束,规范要求四边各留四个模块,条形码则要十个左右。这里你确实可以把它设成零,画面是清爽了,可相当多的扫描器从此就看不见它了,背景一花更是如此。地方不够,那就把码做小,别去动它的留白。 ### 我该用哪种条形码? 扫它的那一方要哪种就用哪种。北美之外的零售条码是 EAN-13,北美是 UPC-A,两者都需要一个由 GS1 发给你的号码,因为那串数字标识的是你的公司,不只是这件商品。EAN-8 是给小包装用的短版本。ITF-14 印在运输纸箱上。Code 128 和 Code 39 除了数字还能装文字,而且完全不用注册,公司内部的东西用它们最合适:固定资产、货架、工单。 ### 校验位是什么,工具为什么自己加了一位? 它是零售条码的最后一位,由前面几位算出来,好让扫描器分得清“读错了”和“读对了”。EAN-13 要你给十二位,第十三位它来算;UPC-A 要十一位,第十二位它来算。你打短的,这个页面替你补上;你打全的,它会核对你给的那一位,对不上就拒绝,而不是悄悄改掉。一位数字被悄悄“修正”,等于印出一张扫出来是别人商品的标签。 ### 能在二维码中间放个 logo 吗? 小标志有时可行,但无法保证任何图像面积比例都安全。DENSO 所说 H 级约 30% 的恢复率以全部码字为分母,并非任意方块。保留定位和校正图形,使用 H 级,并用多部手机测试最终印刷品。[DENSO 的纠错说明](https://www.qrcode.com/en/about/error_correction.html)解释了这个比例。 ### 为什么 SVG 比 PNG 好? 因为码是由边缘构成的,而 PNG 只有固定数量的像素来拼这些边缘。放大一张 PNG,每条边都发虚,而发虚的边正是扫描器最头疼的;给一台 1200 dpi 的打印机一张 512 像素的 PNG,等于让它自己编出那些差别来。SVG 是以指令表达的方块,所以印在名片上和印在广告牌上都一样锐利。这里的 PNG 按每个模块整数个像素画出来,那已经是 PNG 能做到的最好情况。 ### 断网能用吗? 能。页面开一次之后断网,它照干不误。这也是证明“什么都没上传”最省事的办法。一个把你的文字送出去画码的工具,拔线那一刻就停了。 ## 这条隐私承诺怎么核实 - **处理在这个浏览器里完成。** 本工具在浏览器里处理输入和结果,处理代码不把它们上传去处理。Content-Security-Policy 限制可用资源和连接目的地,但已允许的主机仍可接收请求。策略不检查载荷,不能单独证明什么都没有发出。请把具体操作的请求与源码核对,或断网完成该本地操作。 - **这里没有任何东西会去联网取数据。** 整个 `src/` 里,一个 `fetch`、一个 `XMLHttpRequest`、一个 `sendBeacon` 都找不到。码是靠算术从那串字符里推出来、再画成 SVG 的,就在这个页面里,在你的机器上。 - **这个码不指向我们。** 你打进去什么,码里就装什么。有好几家免费生成器给你的码里装的是通往他们自己网站的链接,再从那儿跳到你这儿。于是每一次扫描都被他们数走,而他们哪天不再续那个域名,或者判定你的免费额度到期了,这个码当天就作废。这里不做短链,不做跳转,也不做统计,页面上显示的那串字符,就是图里的那串。 - **PNG 是拿屏幕上这张 SVG 画出来的。** 下载的不是另外渲染一遍、可能跟预览对不上的第二份。同一份标记交给浏览器,画到画布上,正因如此它也不需要联系任何人:里面没有字体要取,也没有图片要加载。 - **Google 加载了什么,又拿不到什么。** 广告脚本和统计脚本来自 Google,捐助按钮来自 Buy Me a Coffee。你打进去的东西,一个字都没给它们。把一串字符变成一个码的每一行代码,都从本站发出,也都摆在仓库里。 - **断网照样能用。** 断开网络,这个工具跟原来一模一样,因为它本来就没有联网这一步。这是最省事的一条证明。 **你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的,构建脚本你能读,也能自己跑一遍,跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容,跟你自己从源码构建出来的结果对一遍就知道了: https://github.com/A-Box-of-Tools/website 最值得先读的几个文件:`config/site.toml` 里是 Content-Security-Policy,`src/qr-encode.js` 和 `src/qr.js` 里是二维码本身,前者管模式、版本和分块,后者管定位图形、掩码和格式信息位;`src/gf256.js` 里是纠错;`src/barcode.js` 里是那些一条一条的码。
不上传怎么生成二维码
- 先挑码的种类。二维码什么都装得下,也是手机摄像头默认要找的东西,所以除非有人另有要求,答案就是它。条形码装的是一串数字,具体要哪一种,由将来扫它的那一方说了算:商店要 EAN-13 或者 UPC-A,运输纸箱要 ITF-14,公司内部用的一般是 Code 128。
- 说清楚码里装什么。最常见的是一个链接,上面那几个表单则负责拼出手机认得的其他格式:一个能自动加入的 Wi-Fi、一张能提示保存的名片、一封邮件、一条短信、一个电话号码、一个地图位置。不管你选哪个,拼好的那串字符都会显示在页面上,因为二维码里装的从来就只有它。
- 决定它能挨多少损伤。四个等级放进去的纠错数据一档比一档多,而纠错越多,码就越大越密。屏幕上看 L 就够,普通纸张用 M,要被反复摸、印得很小、或者贴在晒得到太阳的橱窗上,用 H。菜单上那种每天要擦一遍的码,值得上 Q 或者 H。
- 定尺寸、留白和颜色。留白是码的一部分。规范要求四边各留四个模块的空白,把它裁掉,是印出来的码扫不出来最常见的单一原因。深色在浅色上,而且对比要真够:读取器量的是两者之差,所以白底浅灰不行,浅色在深底上更是有相当多的读取器直接不认。
- 拿你手上这部手机试一下。印一千份之前,先扫屏幕上这个。十秒钟的事,却能挡住一整类预览看不出来的毛病:Wi-Fi 密码里有个字符本该转义、链接漏了
https://、条码数字少了一位。 - 拿 SVG。它是以指令表达的码,不是一堆像素,所以印多大都不发虚,而发虚的边缘正是扫描器最分辨不了的东西。你要粘进去的地方要是不认 SVG,那就顺手也拿上 PNG,它按每个模块整数个像素画出来,同样没有糊掉的边。
说得更细的版本
怎么做一个到了别人手机上还扫得出来的二维码 纠错等级该选哪个,二维码周围那圈白为什么是码的一部分,印多大合适,还有免费生成器的“动态码”日后要你付出什么。
工具箱里还有
常见问题
我打进去的东西会被发到什么地方吗?
不会。二维码就是对一串字符做算术,而这套算术在你自己的浏览器里、你自己的机器上跑。这个工具没有任何联网功能,不取东西,也不发东西。页面的 Content-Security-Policy 把它可能联的地址全列了出来,没有一个是本站的。这一点在这儿比在别的页面更值钱,因为人们最常塞进二维码的,就是自家 Wi-Fi 的密码。
这些码会过期吗?会哪天突然失效吗?
不会,也不可能。你打进去什么,码里就装什么,扫出来永远是那串字符。会过期的是那种里面装着别人地址的码:所谓“动态”二维码,装的是通往生成方服务器的链接,再由那边跳到你这儿。于是他们能数走每一次扫描,能改目的地,也能在试用期结束那天把它关掉。这里没有任何东西经别人中转。
免费吗?能商用吗?
免费,没有账号,没有水印,生成多少个都不限,结果放到产品上、海报上、店面上都行。QR Code 是电装(Denso Wave)的注册商标,他们公开表示不会对使用这种码的人主张这项商标,规范以 ISO/IEC 18004 公开发布,任何人都可以自由实现,这个页面做的就是这件事。本站带广告,经费就是这么来的。
纠错等级该选哪个?
没有特别理由就选 M。L 生成的码最小,屏幕上完全够用;M 扛得住日常翻动;Q 和 H 留给那些要印得很小、要过塑、要贴橱窗、或者中间会被 logo 盖住一块的码。每往上一档,塞进去的校验数据就多一些,同样多的文字就需要一个更大的图形,从 L 换到 H,同一串字符的模块数大约要翻一倍。
一个二维码能装多少东西?
最大那一档是 177 × 177 个模块,最多装 7089 位数字、4296 个大写字母和数字,或者 2953 字节的其他内容,而这还是在最弱纠错下的数字,最强纠错大约只有三分之一。实际上卡住你的不是格式,是扫描器:过了几百个字符,模块就小到普通手机摄像头在一臂之外分辨不出来了。码一长,通常说明里面该换成一个短链接。
链接改成小写,码怎么反而变大了?
因为二维码有一种专门装大写字母和数字的模式,两个字符压进十一位;小写没有这种模式,一个字符要八位。同一个网址写成 HTTPS://EXAMPLE.COM/PAGE,可以比小写版本小三分之一。协议名和主机名本来就不区分大小写,喊成大写除了变小什么都不影响;主机后面那段路径可是区分的,别去动它。
它能扫码吗,还是只能生成?
这一页做不到,隔壁那页可以:识读工具接一张照片、一张截图或者你的摄像头,把里面那串字符还给你。这比画一个码大得多——在一张图里找出那个图形、把拍摄角度纠正回来、再把破损的地方修回来,这三件事这一页压根不用面对——所以它是一个单独的工具,而不是这里的一个按钮。它按这里一贯的规矩来:什么都不上传,摄像头的画面也一帧不留。
留白是干什么的,能不能少留点?
二维码周围那圈白不是装饰,是码的一部分。读取器靠它判断这个图形在哪儿结束,规范要求四边各留四个模块,条形码则要十个左右。这里你确实可以把它设成零,画面是清爽了,可相当多的扫描器从此就看不见它了,背景一花更是如此。地方不够,那就把码做小,别去动它的留白。
我该用哪种条形码?
扫它的那一方要哪种就用哪种。北美之外的零售条码是 EAN-13,北美是 UPC-A,两者都需要一个由 GS1 发给你的号码,因为那串数字标识的是你的公司,不只是这件商品。EAN-8 是给小包装用的短版本。ITF-14 印在运输纸箱上。Code 128 和 Code 39 除了数字还能装文字,而且完全不用注册,公司内部的东西用它们最合适:固定资产、货架、工单。
校验位是什么,工具为什么自己加了一位?
它是零售条码的最后一位,由前面几位算出来,好让扫描器分得清“读错了”和“读对了”。EAN-13 要你给十二位,第十三位它来算;UPC-A 要十一位,第十二位它来算。你打短的,这个页面替你补上;你打全的,它会核对你给的那一位,对不上就拒绝,而不是悄悄改掉。一位数字被悄悄“修正”,等于印出一张扫出来是别人商品的标签。
能在二维码中间放个 logo 吗?
小标志有时可行,但无法保证任何图像面积比例都安全。DENSO 所说 H 级约 30% 的恢复率以全部码字为分母,并非任意方块。保留定位和校正图形,使用 H 级,并用多部手机测试最终印刷品。DENSO 的纠错说明解释了这个比例。
为什么 SVG 比 PNG 好?
因为码是由边缘构成的,而 PNG 只有固定数量的像素来拼这些边缘。放大一张 PNG,每条边都发虚,而发虚的边正是扫描器最头疼的;给一台 1200 dpi 的打印机一张 512 像素的 PNG,等于让它自己编出那些差别来。SVG 是以指令表达的方块,所以印在名片上和印在广告牌上都一样锐利。这里的 PNG 按每个模块整数个像素画出来,那已经是 PNG 能做到的最好情况。
断网能用吗?
能。页面开一次之后断网,它照干不误。这也是证明“什么都没上传”最省事的办法。一个把你的文字送出去画码的工具,拔线那一刻就停了。