python生成和解析二维码

发布时间:2019-08-26 08:42:18编辑:auto阅读(1544)

    python生成二维码,常用的模块有pyqrencode和qrcode。


    一、用pyqrencode模块生成二维码


    安装pyqrencode模块很复杂,依赖的东西也比较多,经过测试总结以下安装过程:


    1、下载Cython:https://pypi.python.org/packages/source/C/Cython/Cython-0.19.1.tar.gz

    安装:tar -zxf Cython-0.19.1.tar.gz && cd Cython-0.19.1 && python setup.py install


    2、下载qrencode:http://fukuchi.org/works/qrencode/qrencode-3.4.2.tar.gz

    安装前确认安装了yum install libpng-devel -y

    安装:tar -zxf qrencode-3.4.2.tar.gz && cd qrencode-3.4.2 && ./configure && make && make install


    3、下载Imaging:http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz

    安装:tar -zxf Imaging-1.1.7.tar.gz && cd Imaging-1.1.7 && python setup.py install


    4、下载:https://codeload.github.com/bitly/pyqrencode/zip/master

    安装:

    unzip -q pyqrencode-master.zip

    cd pyqrencode-master

    easy_install cython

    cython qrencode.pyx

    python setup.py install

    echo "/usr/local/lib">>/etc/ld.so.conf

    ldconfig


    5、用pyqrencode生成二维码

    >>> from qrencode import Encoder

    >>> encoder = Encoder()

    >>> img = encoder.encode("hello python!", {'width':300})

    >>> img.save("char.png")

    char.png就是生成的二维码文件


    二、用qrcode模块生成二维码


    1、下载:https://pypi.python.org/packages/source/q/qrcode/qrcode-2.0.tar.gz

    2、安装:tar -zxf qrcode-2.0.tar.gz && cd qrcode-2.0 && python setup.py install

    3、用qrcode生成二维码

    >>> import qrcode

    >>> q=qrcode.main.QRCode()

    >>> q.add_data("hello python!")

    >>> q.make()

    >>> m=q.make_image()

    >>> m.save('char.png')


    三、二维码的识别


    解析二维码用到zbar模块,改模块在windowns下面是exe文件直接安装,比较简单,在linux下依赖的包比较多,安装过程就不在介绍,使用方法如下:

    data就是二维的内容

    def get_QR():
        scanner = zbar.ImageScanner()
        scanner.parse_config("enable")
        pil = Image.open("char.png").convert('L')
        width, height = pil.size
        raw = pil.tostring()
        image = zbar.Image(width, height, 'Y800', raw)
        scanner.scan(image)
        data = ''
        for symbol in image:
            data+=symbol.data
        del(image)
        return data


    http://wangwei007.blog.51cto.com/68019/1249265


关键字