北京谷歌的乐高二维码

周六的时候应 Google 邀请参加了 2019 Northeast Asia GDG Summit 的活动。

Tea break 的时候,发现很多人在会议室外面的乐高墙前面自拍留影。

忽然脑袋一热,突发奇想:这么多人拍照,为什么不做一个宣传 GDG Guangzhou 的二维码呢?

二话不说,说干就干,走你~~~

准备工作

首先,找到 GDG Guangzhou 的公众号二维码如下(这真不是广告!):

用肉眼数了一下 37 x 37,也就是说 1,369 块!

Hmm… 感觉有点多啊,而且中间的图片似乎对于我们来说用处也不大啊!

作为一个白金认证级别的懒人,我决定重构二维码,简化之!

通过工具,得到二维码的原始数据为(再次声明,不是广告):

1
http://weixin.qq.com/r/iUzbw7PEfO4Drfeg9xmb

用任意二维码生成工具,基于这个地址可以生成一个 29 x 29 没有图片的二维码。

这样看来,我们只需要 841 块就可以完成二维码了,相比原来可谓是大大地降低了拼乐高的工作量啊!

但是同行的小伙伴觉得,直接对着二维码来拼乐高还是太痛苦了,问能不能用 Photoshop 标注一下刻度。

开什么国际玩笑,像我这种懒人怎么可能一条条地划线?再说了,我又没有鼠标,用 Macbook 自带的 Trackpad 也很痛苦啊。

况且,对于一个「程序员」来说,有什么是用一个程序不能解决的?如果不行,那就两个程序!

Excel 二维码

想了下,用 Excel 的话,天然就是表格,自带行列标记,拿来做标识不是完美吗?

胡乱 Google 了一下,并没有直接生成 Excel QR Code 这种鬼东西,有的也是用 Addin 生成的 QR Code 图片,跟我的要求不相符。

我想要的是,每个单元表格内,用颜色来标注,而不是生成一张图片。既然没有现成的解决方案,那就自己来吧。

本着拿来主义的精神,不要自己造轮子,又是一轮胡乱搜索之后,我发现了 Segno,玩起!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ python cli.py --output=gdggz.txt "http://weixin.qq.com/r/iUzbw7PEfO4Drfeg9xmb"
$ cat gdggz.txt
0000000000000000000000000000000000000
0000000000000000000000000000000000000
0000000000000000000000000000000000000
0000000000000000000000000000000000000
0000111111101001111000101011111110000
0000100000101110111001100010000010000
0000101110100011111011001010111010000
0000101110100010011011101010111010000
0000101110101111011000100010111010000
0000100000101001001000001010000010000
0000111111101010101010101011111110000
0000000000001011101010111000000000000
0000111001101110000111001111100110000
0000000110000110000010110011000110000
0000001100111001000111010000111010000
0000110001001100001010101010100000000
0000011111101101101100001111000010000
0000111110010000111101111011001110000
0000110011101000111100110001110010000
0000000010001001101110011010100000000
0000001100110010000010001010010010000
0000001001010110011010011111011110000
0000110101111001011110110110100010000
0000001100001000000110010100100000000
0000110111111101100110011111110100000
0000000000001010110110101000111010000
0000111111100000110100001010100010000
0000100000101001101010111000110110000
0000101110100100100110111111100100000
0000101110100010000010101100110010000
0000101110101011101110000000100110000
0000100000101010000000101001010000000
0000111111101011111101011010110010000
0000000000000000000000000000000000000
0000000000000000000000000000000000000
0000000000000000000000000000000000000
0000000000000000000000000000000000000

就这样我得到了一个由 0 和 1 组成的二维码数组,接下来我打开了 Vim,用 Record 功能把上面的二维码变成了一种叫做 CSV 的东东。

接着在 Excel 中打开,就会看到类似下面这样的表格(是的,没错,0 都已经被我干掉了):

接下来用 Conditional Formatting 把有 1 的表格都填上颜色吧!

我把背景色和前景色都设置成了黑色,这样就算表格里面有 1 也看不出来了。

为了更好的「施工」,我又简单地划分了一下区域,这样拼乐高的时候可以分区域进行,检查错误的时候效率也会高点。

最终完成的 Excel 版 QR Code 效果如下(有呼应 Google 的四个颜色哟):

二维码施工队

没啥好说的,剩下的都是体力活儿了。

为了不被别人「破坏」我们的二维码,我们决定要把二维码弄高一点。

道理是没有错,但是太高了也有一个问题,就是拼的时候那是异常的痛苦啊!

经过我们地不懈努力,终于完工啦!

大家的内心充满了喜悦与激动,纷纷拿出手机,忍不住扫了起来……

然而……

没有一个人能扫码成功……

😭

后期制作

我们反复检查了二维码,没有问题啊,为什么就是不行呢?我想一个人静静……

经过一秒钟的思考,我(柯南附体)认为真相只有一个:「凶手」就是灯光和阴影!

本来空白的地方,因为蓝色和灰色背景对比度的不足,使得空白处的阴影被系统误识别为填充物。

这样的话,唯一的解决方案就是继续施工了,必须把所有的空白处都填满!

唉,出来混迟早要还的。本还以为可以早早就收工了呢,看来还是不能懒啊。

又是一段漫长地施工,全因白色乐高实在是太匮乏了,感觉都被 Google 那几个字给用完了。

于是乎我们拆东墙补西墙,把我们能找到的白色全都用上了,结果还是不够。

没办法,死马当成活马医,硬着头皮用浅色的乐高代替吧。

说实在的,在我们拼完最后几个点之前,这个二维码还是处于完全无法识别的状态。

连我们自己也不确定,最后到底能不能成功。但是……

功夫不负有心人,可怜天下乐高人,我们终于成功啦!

不知道这个孤单的二维码能存活到什么时候呢?😁

感谢

排名不分先后:

Google 提供场地和乐高
Yui 帮忙贴二维码
Hebe 帮忙寻找需要的乐高
Fung 带我们重返会议室完成了这一历史壮举