V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
7sDream
V2EX  ›  Python

艺术二维码 QArt Codes

  7sDream ·
7sDream · 2016-08-06 11:38:03 +08:00 · 22291 次点击
这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。

介绍

呼,这个很久之前定的目标今天终于差不多算写出来了。

几个月之前发现了一篇文章,是 Russ Cox 写的一篇关于将二维码与图片结合的,我觉得很好玩就准备动手实现。

其实已经有了其他实现的,我记得代码家的微博好像还推荐过,就是这个:https://github.com/dieforfree/qart4j

所以可能很多人都知道这个东西了,我读完 qart4j 的代码( QwQ ,好难读,没注释,而且我还不会 Java )之后开始用 Python 实现我自己的版本,其他的就不多说了,看几个例子:

例子

扫描这个二维码就能打开 V2EX 的首页啦~~

这个是我的 Github

这个是 bilibili

啊对了,需要说明的是,二维码的编码部分也是我自己写的,没有调用库,独立出来了一个 pyqr 的 cli 用于生成普通的二维码,使用效果大概是这样:

当然,也是可以生成图片的,加个 -o 参数就好

pyqart 的 cli 也支持打印在 terminal 里的,例子:

其他的细节看 Readme 吧,pyqr -hpyqart -h 可以查看更多帮助。

原理

因为有点复杂我就不在帖子里说了,涉及到二维码的编码规范和里德所罗门纠错码之类的东西,大家可以暂时看上面那篇算法提出者写的文章,有可能以后我会写一系列文章仔细说明这个实现。

代码

代码在这: https://github.com/7sDream/pyqart

扫描下面这个二维码也可以访问:

我的其他项目可以在 Github 上看……除了那两个最先的 piano 项目,其他的都挺好玩儿的……

额外

额,开学就大四了,然而工作和实习都并没有着落…………

听说阿里今年几乎就不怎么找人,加上它们也没啥 Py 岗……估计是没戏了。 腾讯扔了个简历至今没回应。 网易那个笔试简直了……算法题死活交不上,最后放弃了

未来迷茫中…………

目前座标天津,大四一年准备尽量出去实习吧,有没有什么北京的公司招 Py 实习的,可以联系一下。还有就是毕业以后的工作,有没有公司要的?

以上,谢谢阅读。

第 1 条附言  ·  2016-08-06 14:17:07 +08:00

本来上午想在我知乎专栏里发篇文章介绍下项目和原理的……然后发现知乎专栏会把上传的包含二维码的图片自动转换成内容……

有点烦这个功能,当时气的不行发了篇文章喷,在这:去你特么的友善度

朋友们可以点进去瞅瞅 =,=

第 2 条附言  ·  2016-08-06 20:24:43 +08:00

如果大家想实现的话,这里有一些可以参考的资料。

最后这是我项目的架构,如果想阅读源码的同学可以参考:

pyqart.qr 这一部分是一个基本上完整的二维码生成器, data 模块是数据编码, ec 模块是生成纠错码, args 是二维码的参数, painter.canvas 生成二维码的框架, painter.painter 的作用是把 canvas 、 data 、 ec 三部分组合起来,最后交给 printer 里的各种生成器输出二维码。

pyqart.art 里的 QArtSourceImage 是处理输入图像的,做一些二值化,dithering,计算对比度之类的操作。 QrArtist 里的 bis 函数是 QArt 的关键算法。

我代码也没注释的,可能也有点难读,推荐和 qart4j 结合起来读。

第 3 条附言  ·  2016-08-06 21:39:13 +08:00
我跑去 Reddit 上也发了下 =,= 然而并没有人鸟我……

https://www.reddit.com/r/Python/comments/4wemoe/qart_codes_python_implementation/

小伙伴们如果有时间的话可以随意留言支持一下~
102 条回复    2018-09-10 10:51:29 +08:00
1  2  
wujunze
    101
wujunze  
   2017-07-18 15:46:26 +08:00
@designer 求链接
@zander 求链接
252860883m
    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)
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1782 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 16:23 · PVG 00:23 · LAX 09:23 · JFK 12:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.