Código QR y análisis

Cuando se trata del código QR, todos deben estar familiarizados con él. Se puede decir que el código QR casi ha penetrado en todos los rincones de nuestras vidas. Por ejemplo, cuando vamos al supermercado y compramos para escanear el código QR para pagar, tomamos el autobús para escanear el metro. Cuando el código QR ingresa a la estación, escaneamos el código QR cuando lo recogemos en la publicación de novatos. Si algún día conocemos a una persona interesante, también podemos escanear el código QR para agregar un amigo en WeChat. Si lee nuestro artículo, se siente bien. Tengo un poco de ayuda, también puedo escanear el código QR al final del artículo para seguir nuestra cuenta oficial.

Las bibliotecas que necesitamos para generar e identificar códigos QR a través de Python son: qrcode, myqr, zxing e instalar mediante pip install qrcode / myqr / zxing

Estructura del código QR

Primero, comprendamos brevemente la estructura del código QR, como se muestra en la siguiente figura:

En la figura, podemos ver que la estructura del código bidimensional se divide en dos partes: el gráfico funcional y el área de codificación.El gráfico funcional se subdivide en: área en blanco, gráfico de detección de posición, separador de gráfico de detección de posición, gráfico de posicionamiento, gráfico de corrección El área de codificación se subdivide en: información de formato, información de versión, datos y palabras de código de corrección de errores, para comprender brevemente la función de cada parte:

  • Área en blanco: dejar en blanco, no es necesario hacer nada
  • Gráficos de detección de posición: ayuda al software de escaneo a localizar el código QR
  • Separador gráfico de detección de posición: distinga entre gráficos funcionales y área de codificación
  • Posicionamiento de gráficos: indicando la densidad de la marca y determinando el sistema de coordenadas
  • Gráficos de corrección: el número y la ubicación de los gráficos de corrección
  • Información de formato: información para almacenar datos formateados
  • Información de la versión: las especificaciones del código QR, el símbolo del código QR tiene una matriz de 40 especificaciones
  • Palabras de código de datos y corrección de errores: la información de código QR guardada real y las palabras de código de corrección de errores (utilizadas para corregir errores causados ​​por el daño del código QR)

Generar código QR

Podemos usar qrcode y myqr para crear códigos bidimensionales. Miremos más de cerca.

Código QR

En la vida, podemos ver algunos códigos QR. Después de escanear, saltamos a una dirección. Tal función qrcode se puede realizar. Veamos un ejemplo:

import qrcode

# 二维码内容(链接地址或文字)
data = 'https://www.baidu.com/'
# 生成二维码
img = qrcode.make(data=data)
# 显示二维码
img.show()
# 保存二维码
# img.save('qr.jpg')

Mira el efecto:

Podemos saltar a la dirección que establecimos escaneando el código QR de arriba.

El código QR anterior es relativamente primitivo, también podemos configurarlo y embellecerlo simplemente. La implementación del código es la siguiente:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import qrcode

'''
version:二维码的格子矩阵大小,可以是 1 到 40,1 最小为 21*21,40 是 177*177
error_correction:二维码错误容许率,默认 ERROR_CORRECT_M,容许小于 15% 的错误率
box_size:二维码每个小格子包含的像素数量
border:二维码到图片边框的小格子数,默认值为 4
'''
qr = qrcode.QRCode(
    version=2,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=15,
    border=3,
)
# 二维码内容
data = 'https://www.taobao.com/'
qr.add_data(data=data)
# 启用二维码颜色设置
qr.make(fit=True)
img = qr.make_image(fill_color='blue', back_color='white')
# 显示二维码
img.show()

 

myqr

Si no estamos satisfechos con el estilo del código QR generado anteriormente, necesitamos usar la biblioteca myqr, que no solo puede generar códigos QR ordinarios, sino también generar códigos QR con imágenes y códigos QR dinámicos, pero queremos Al ver el código QR generado, debe ir a la ubicación de guardado y abrirlo manualmente.

Código QR ordinario

Primero usemos myqr para generar un código QR ordinario, mire el ejemplo:

from MyQR import myqr

'''
words:内容
    version:容错率
save_name:保存的名字
'''
myqr.run(words='https://www.baidu.com/',
         version=1,
        save_name='myqr.png')    #保存地址

Mira el efecto:

Código QR con foto

Luego usamos myqr para generar un código QR con un gráfico, eche un vistazo al ejemplo:

from MyQR import myqr

'''
picture:生成二维码用到的图片
colorized:False 为黑白,True 为彩色
'''
myqr.run(words='https://www.baidu.com/',
         version=1,
         picture='bg.jpg',
         colorized=True,
         save_name='pmyqr.png')

Mira el efecto:

 

 

Código QR dinámico

Finalmente, usamos myqr para generar un código QR dinámico, mira el ejemplo:

from MyQR import myqr

myqr.run(words='https://www.baidu.com/',
         version=1,
         picture='my.gif',
         colorized=True,
         save_name='myqr.gif')

Mira el efecto:

 

Analizando el código QR

Usamos la biblioteca zxing para identificar el código QR, y el uso es relativamente simple. Veamos el siguiente ejemplo:

import zxing

reader = zxing.BarCodeReader()
barcode = reader.decode('myqr.gif')
print(barcode.parsed)

 

Por supuesto, también podemos embellecer el código QR existente, la implementación es:

  • Analiza el contenido del código QR existente
  • Use el contenido analizado para generar un nuevo código QR

Tome una cuenta pública como ejemplo, como se muestra en la siguiente figura:

 

Eche un vistazo al código de implementación:

import zxing
from MyQR import myqr

reader = zxing.BarCodeReader()
barcode = reader.decode('gzh.jpg')
myqr.run(words=str(barcode.parsed),
         version=1,
         picture='my.gif',
         colorized=True,
     save_name='gmyqr.gif')

Mira el efecto:

 

 

 

Publicado 6 artículos originales · recibido 1 · vistas 655

Supongo que te gusta

Origin blog.csdn.net/DY1316434466/article/details/105439960
Recomendado
Clasificación