呼,这个很久之前定的目标今天终于差不多算写出来了。
几个月之前发现了一篇文章,是 Russ Cox 写的一篇关于将二维码与图片结合的,我觉得很好玩就准备动手实现。
其实已经有了其他实现的,我记得代码家的微博好像还推荐过,就是这个:https://github.com/dieforfree/qart4j
所以可能很多人都知道这个东西了,我读完 qart4j 的代码( QwQ ,好难读,没注释,而且我还不会 Java )之后开始用 Python 实现我自己的版本,其他的就不多说了,看几个例子:
扫描这个二维码就能打开 V2EX 的首页啦~~
这个是我的 Github
这个是 bilibili
啊对了,需要说明的是,二维码的编码部分也是我自己写的,没有调用库,独立出来了一个 pyqr 的 cli 用于生成普通的二维码,使用效果大概是这样:
当然,也是可以生成图片的,加个 -o 参数就好
pyqart 的 cli 也支持打印在 terminal 里的,例子:
其他的细节看 Readme 吧,pyqr -h
和 pyqart -h
可以查看更多帮助。
因为有点复杂我就不在帖子里说了,涉及到二维码的编码规范和里德所罗门纠错码之类的东西,大家可以暂时看上面那篇算法提出者写的文章,有可能以后我会写一系列文章仔细说明这个实现。
代码在这: https://github.com/7sDream/pyqart
扫描下面这个二维码也可以访问:
我的其他项目可以在 Github 上看……除了那两个最先的 piano 项目,其他的都挺好玩儿的……
额,开学就大四了,然而工作和实习都并没有着落…………
听说阿里今年几乎就不怎么找人,加上它们也没啥 Py 岗……估计是没戏了。 腾讯扔了个简历至今没回应。 网易那个笔试简直了……算法题死活交不上,最后放弃了
未来迷茫中…………
目前座标天津,大四一年准备尽量出去实习吧,有没有什么北京的公司招 Py 实习的,可以联系一下。还有就是毕业以后的工作,有没有公司要的?
以上,谢谢阅读。
本来上午想在我知乎专栏里发篇文章介绍下项目和原理的……然后发现知乎专栏会把上传的包含二维码的图片自动转换成内容……
有点烦这个功能,当时气的不行发了篇文章喷,在这:去你特么的友善度
朋友们可以点进去瞅瞅 =,=
如果大家想实现的话,这里有一些可以参考的资料。
最后这是我项目的架构,如果想阅读源码的同学可以参考:
pyqart.qr 这一部分是一个基本上完整的二维码生成器, data 模块是数据编码, ec 模块是生成纠错码, args 是二维码的参数, painter.canvas 生成二维码的框架, painter.painter 的作用是把 canvas 、 data 、 ec 三部分组合起来,最后交给 printer 里的各种生成器输出二维码。
pyqart.art 里的 QArtSourceImage 是处理输入图像的,做一些二值化,dithering,计算对比度之类的操作。 QrArtist 里的 bis 函数是 QArt 的关键算法。
我代码也没注释的,可能也有点难读,推荐和 qart4j 结合起来读。
102
252860883m 2018-09-10 10:51:29 +08:00
嘿,贴个我自己之前写的艺术二维码的 Demo 吧,有 javascript 和 nodejs 版的。
https://github.com/252860883/Art-QRCode-min ![image]( http://p70gzm2sm.bkt.clouddn.com/%E6%B3%A8%E9%87%8A.jpg) |