普通二维码丑是共识,常见做法是中间贴个 logo、圆个角。andrewt.net 的 Dithered QR Code Generator 走了另一条路:把一张真实照片用抖动(dithering)算法直接编织进二维码,成品像老式单色显示器上的画像,但手机照扫。做海报、名片、产品包装的站长可以了解一下,这就是现成的差异化物料。
它为什么能成立:二维码模块里只有中心一小块是扫描器真正采样的数据位,其余大量是冗余。工具先把数据位钉死,再做两轮误差扩散——第一轮消化数据位带来的亮度误差,第二轮把整张图抖成黑白。纠错冗余保住可扫性,误差扩散保住画面,两套老技术配合得相当漂亮。
实操要点,页面上控件都是现成的:
- 上传图片,填目标 URL;
- 纠错等级建议直接选 High——你为了画面牺牲的冗余越多,容错就越少;
- 图片大片纯黑或纯白时,用 Min/Max brightness 限制动态范围,避免误差堆积;
- 定位块挡住主体就试 Rotation 和八种 Mask,把必需图案挪到不碍事的位置;
- Subpixel ratio 拉到 3 以上,数据位占比更小,画面更干净;
- 导出后务必保留四周静区,并拿几部不同手机实测再定稿。
要泼的冷水只有一盆:二维码的冗余本来就是为皱纸、差打印机、弱光、旧摄像头准备的。屏幕上扫得好好的图,印出来折一折、灯一暗就可能翻车。所以这类艺术码适合大屏、海报、展示位这类受控场景,别急着印五万张传单。源码在 Codeberg 开源,想集成进自己建站流程的可以自己改。
登录 后参与评论