zoukankan      html  css  js  c++  java
  • L7-4 多样的二维码

    一、课堂导入

    上节课我们学习了图片的处理操作,本节课我们将更深入的探究编程的奥秘,将一起探寻神奇的二维码操作。

    二、认识二维码

    1.什么是二维码?

    # 二维码又称二维条码,常见的二维码有QR Code,QR全称Quick Response,能存储很多信息。
    # QR Code码,是由Denso公司于1994年9月研制的一种矩阵二维码符号,
    # 它具有一维条码及其它二维条码所具有的信息容量大、可靠性高,
    # 可表示汉字及图象多种文字信息、保密防伪性强等优点。

    2.二维码能做什么?

    # 1、信息获取(名片、地图、WIFI密码、资料)。
    
    # 2、网站跳转(跳转到微博、手机网站、网站)。
    
    # 3、广告推送(用户扫码,直接浏览商家推送的视频、音频广告)。
    
    # 4、手机电商(用户扫码、手机直接购物下单)。
    
    # 5、防伪溯源(用户扫码、即可查看生产地;同时后台可以获取最终消费地)。
    
    # 6、优惠促销(用户扫码,下载电子优惠券,抽奖)。
    
    # 7、会员管理(用户手机上获取电子会员信息、VIP服务)。
    
    # 8、手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付)。

    3.二维码的分类

    # 堆叠式二维码:需要堆积成二行或多行,编码原理是建立在一维条码基础之上
    # 矩阵式二维码:在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码

    三、二维码的操作

    通过我们的介绍,大家对二维码有了简单的了解,接下来,我们将对二维码的做一些操作。

    1.普通二维码

    1.1简单用法

    qrcode是python中制作二维码的库。

    # 1.导入qrcode库
    import qrcode
    # 2.制作二维码
    qr_image=qrcode.make("hello world")
    # 3.保存二维码
    qr_image.save("C:\Users\admin\Desktop\Tx\Picture\hello.png")

    可用PIL库将生成的二维码展示出来。

    import PIL
    from PIL import Image
    import qrcode
    qr_image=qrcode.make("hello world")
    # 展示出来
    qr_image.show()
    qr_image.save("C:\Users\admin\Desktop\Tx\Picture\hello.png")

    1.2.存储网址信息

    import qrcode
    qr_image=qrcode.make("https://www.baidu.com")
    qr_image.save("C:\Users\admin\Desktop\Tx\Picture\baidu.png")

    2.高级应用

    二维码的高级应用涉及矩阵尺寸、容错率值、像素大小和格子厚度,值的大小是我们自己来设置的。

    import qrcode
    # 1.设置参数
    qr=qrcode.QRCode(
    #二维码的尺寸大小,值为1~40的整数,控制大小,最小值是1)
    version = 7,
    #容错率值
    error_correction = qrcode .constants.ERROR_CORRECT_H,
    #每个格子像素大小
    box_size = 10,
    #边框格子的厚度
    border = 4
    )
    # 2.生成图片
    qr.add_data("w:123456")
    qr.make(fit=True)
    img=qr.make_image()
    img.save("C:\Users\admin\Desktop\Tx\Picture\000.png")

    参数含义:

    # version:值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。 
    如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可。
    
    # error_correction:控制二维码的错误纠正功能。可取值下列4个常量。
      ERROR_CORRECT_L:大约7%或更少的错误能被纠正。
      ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正。
      ROR_CORRECT_H:大约30%或更少的错误能被纠正。
    
    # box_size:控制二维码中每个小格子包含的像素数。
    # border:控制边框(二维码与图片边界的距离)
    # 包含的格子数(默认为4,是相关标准规定的最小值)

    2.高级的二维码

    为二维码添加图标,图标要有合适的大小,指定限制图标的大小尺寸最大是二维码长宽的1/4,

    以免残缺太大,影响识别。结合Python图像库PIL,把图片黏贴在二维码图片的中间,即可生成一个带有图标的二维码。

    import PIL
    from PIL import Image
    import qrcode
    # 生成二维码图像
    qr=qrcode.QRCode(
        version=2,   
        error_correction = qrcode .constants.ERROR_CORRECT_H,
        box_size=10,
        border=1
        )
    qr.add_data("https://www.miaocode.com")
    qr.make(fit=True)
    # 获得image实例并把颜色模式转为RGB
    img=qr.make_image()
    img=img.convert('RGB')
    # 用于填充的图片
    icon=Image.open("C:\Users\admin\Desktop\Tx\Picture\t3.jpg")
    # 获得图片的原始尺寸
    img_w,img_h=img.size
    # 获得图片的四分之一尺寸
    factor=4
    size_w=int(img_w/factor)
    size_h=int(img_h/factor)
    # 比较并重新设置图片的尺寸大小
    icon_w,icon_h=icon.size
    if icon_w >size_w:
        icon_w=size_w
    if icon_h >size_h:
        icon_h=size_h
    icon=icon.resize((icon_w,icon_h),Image.ANTIALIAS)
    # 计算图片的位置
    w=int((img_w-icon_w)/2)
    h=int((img_h-icon_h)/2)
    img.paste(icon,(w,h))
    img.save("C:\Users\admin\Desktop\Tx\Picture\mi.png")

     彩色二维码

    import qrcode,PIL
    from PIL import Image
    qr = qrcode.QRCode(
    version=5,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=5,
    border=4,
    )
    qr.add_data("哈哈哈哈哈")
    qr.make(fit=True)
    img = qr.make_image(fill_color="green", back_color="white")
    icon = Image.open("C:\Users\admin\Desktop\Tx\Picture\t2.jpg")
    img_w, img_h = img.size
    icon_w, icon_h= icon.size
    icon_w= int(img_w / 4)
    icon_h= int(img_h /4)
    icon =icon.resize((icon_w,icon_h),Image.ANTIALIAS)
    w = int((img_w-icon_w)/2)
    h = int((img_h-icon_h)/2)
    img.paste(icon,(w, h))
    img.save("C:\Users\admin\Desktop\Tx\Picture\cai.jpg")

    四、总结

    # 1.二维码是某种特定的几何图形按一定规律在平面分布的黑白相间的图形记录数据符号信息的。
    #2.二维码的功能:信息获取、网站跳转、手机支付生活中的各种领域。
  • 相关阅读:
    取得GridView被隐藏列的值方法集合
    【转】ASP.NET 数据分页第一篇 探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数
    浏览器的工作原理:新式网络浏览器幕后揭秘
    无法装载文件或者汇编的AjaxControlToolkit
    【转】ASP.NET 数据分页第二篇 范例下载
    在用户控件中FindControl控件
    【转】ASP.NET 数据分页第三篇 结合 Custom Control 处理 GridView 的 UI 呈现
    Ajax Toolkit AutoComplete 几种用法
    到底如何区分什么是架构、框架、模式和平台 ?
    因果推理综述——《A Survey on Causal Inference》一文的总结和梳理
  • 原文地址:https://www.cnblogs.com/xiaoxiao-ya/p/12098574.html
Copyright © 2011-2022 走看看