最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 介绍python应用学习之qrcode生成二维码

    正文概述 六哥   2021-02-23   84

    免费学习推荐:python视频教程

    python应用学习(一)——qrcode生成二维码

    • 前言
    • 一、准备
    • 二、代码编写
      • 1.引入库
      • 2.配置初始化参数
      • 3.得到二维码对象
      • 4.在二维码中放置logo
      • 5.配置相应信息并调用函数
      • 6.完整代码
    • 最后

    前言

    本文利用python生成一个自己想要的二维码,其中代码做了注释并于相关知识的解答


    一、准备

    1、python环境

    2、涉及到的python库需要 pip install 包名 安装

    pip install qrcodepip install pillow

    二、代码编写

    1.引入库

    import qrcodefrom PIL import Imageimport osimport sys

    2.配置初始化参数

     qr = qrcode.QRCode(
            version=2,  #25*25     二维码的版本号,每一个版本号对应一个尺寸,这里尺寸不是图片的大小而的是二维码长宽被分成的份数
            error_correction=qrcode.constants.ERROR_CORRECT_H,     #纠错容量,指二维码不完整时可以正常识别出原信息的概率(ERROR_CORRECT_H的纠错率最高)
            box_size=8,            #生成图片的像素
            border=1,              #二维码边框宽度    )

    3.得到二维码对象

    qr.add_data(string)  **#string为想要打开的链接**
        qr.make(fit=True)    #用make()方法生成图片
        img = qr.make_image(fill_color = 'black',back_color = 'white')  #得到二维码对象,并可以通过修改fill_color、back_color参数来调整小格子颜色和背景色
        img = img.convert("RGBA")  #将图片转换为RGBA格式

    4.在二维码中放置logo

    if logo and os.path.exists(logo):
            try:
                icon = Image.open(logo)
                img_w, img_h = img.size  #img_w、img_h是二维码的尺寸
            except Exception as e:
                print(e) 
                sys.exit(1)
            factor = 4
            size_w = int(img_w / factor)
            size_h = int(img_h / factor)
    
            icon_w, icon_h = icon.size   #icon_W、icon_h是logo原始的尺寸        if icon_w > size_w:          #size_W、size_h是二维码尺寸的1/factor
                icon_w = size_w        if icon_h > size_h:
                icon_h = size_h
            icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)   #antialias是平滑处理
            # 保证二维码大小不超过二维码大小的1/factor
    
            w = int((img_w - icon_w) / 2)  #计算logo在二维码中的相对位置
            h = int((img_h - icon_h) / 2)
            icon = icon.convert("RGBA")
            img.paste(icon, (w, h), icon)  #根据相对位置w、h将logo放到二维码图片上,所以说实际是logo并不是二维码的一部分,会遮挡二维码的一部分,不能太大,否则无法识别

    5.配置相应信息并调用函数

    if __name__ == "__main__":
        info = "https://blog.csdn.net/weixin_45386875/article/details/113766276"            #二维码的链接
        pic_path = "qr.png"                       #生成的图片保存文件
        logo_path = "logo.png"                    #logo的文件名    gen_qrcode(info, pic_path,logo_path )     #调用函数

    6.完整代码

    import qrcodefrom PIL import Imageimport osimport sysdef gen_qrcode(string, path, logo=""):
        """
        生成中间带logo的二维码
        需要安装qrcode, PIL库
        @参数 string: 二维码字符串
        @参数 path: 生成的二维码保存路径
        @参数 logo: logo文件路径
        @return: None
        """
        qr = qrcode.QRCode(
            version=2,  #25*25     二维码的版本号,每一个版本号对应一个尺寸,这里尺寸不是图片的大小而的是二维码长宽被分成的份数
            error_correction=qrcode.constants.ERROR_CORRECT_H,     #纠错容量,指二维码不完整时可以正常识别出原信息的概率(ERROR_CORRECT_H的纠错率最高)
            box_size=8,    #生成图片的像素
            border=1,      #二维码边框宽度
        )
        qr.add_data(string)  #string为想要打开的链接
        qr.make(fit=True)    #用make()方法生成图片
        img = qr.make_image(fill_color = 'black',back_color = 'white')  #得到二维码对象,并可以通过修改fill_color、back_color参数来调整小格子颜色和背景色
        img = img.convert("RGBA")  #将图片转换为RGBA格式
        if logo and os.path.exists(logo):
            try:
                icon = Image.open(logo)
                img_w, img_h = img.size  #img_w、img_h是二维码的尺寸
            except Exception as e:
                print(e) 
                sys.exit(1)
            factor = 4
            size_w = int(img_w / factor)
            size_h = int(img_h / factor)
    
            icon_w, icon_h = icon.size   #icon_W、icon_h是logo原始的尺寸
            if icon_w > size_w:          #size_W、size_h是二维码尺寸的1/factor
                icon_w = size_w        if icon_h > size_h:
                icon_h = size_h
            icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)   #antialias是平滑处理
            # 保证二维码大小不超过二维码大小的1/factor
    
            w = int((img_w - icon_w) / 2)  #计算logo在二维码中的相对位置
            h = int((img_h - icon_h) / 2)
            icon = icon.convert("RGBA")
            img.paste(icon, (w, h), icon)  #根据相对位置w、h将logo放到二维码图片上,所以说实际是logo并不是二维码的一部分,会遮挡二维码的一部分,不能太大,否则无法识别
        img.save(path)
        # 调用系统命令打开图片
        # xdg - open(opens a file or URL in the user's preferred application)
        #os.system('xdg-open %s' %(path)) #这是Linux系统的命令
        os.startfile(path) #windows 下打开文件if __name__ == "__main__":
        info = "https://blog.csdn.net/weixin_45386875?spm=1010.2135.3001.5343"            #二维码的链接
        pic_path = "qr.png"                       #生成的图片保存文件
        logo_path = "logo.png"                    #logo的文件名
        gen_qrcode(info, pic_path,logo_path )     #调用函数

    相关免费学习推荐:python教程(视频)

    以上就是介绍python应用学习之qrcode生成二维码的详细内容,更多请关注网站无忧资源网其它相关文章!


    网站无忧 » 介绍python应用学习之qrcode生成二维码

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    升级SVIP尊享更多特权立即升级