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 · 23860 次点击
  •   查看本主题需要登录
    这是一个创建于 3413 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

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

    几个月之前发现了一篇文章,是 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   ·   Solana   ·   5559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 01:46 · PVG 09:46 · LAX 17:46 · JFK 20:46
    ♥ Do have faith in what you're doing.