Insertar imágenes en el código QR QR
Los códigos QR finalmente se han vuelto populares. Ahora las etiquetas de código QR en anuncios de productos grandes y pequeños en calles y callejones están en todas partes, y la mayoría de ellos no son simples códigos de QR puros, sino codos QR con íconos de personalidad en el medio.
Solía hacer un programa que use el proyecto de código abierto de Google ZXing para implementar el código QR y la codificación y decodificación del código 1R, y abrí el código fuente (codificación de código de barras y QR de codificación y decodificador implementado con C#). Hoy, sigo agregando imágenes pequeñas en el medio del código QR basado en este programa.
Conocimiento previo
QRCode usa el código Reed-Solomon para hacer correcciones de errores. Para nosotros, Reed Solomon Coding tiene dos características muy importantes. Primero, es un código de sistema explícito, lo que significa que puede ver directamente la información original en la codificación final. Es como cuando codificamos "Hello World", finalmente vemos "Hello World" y los pocos códigos tolerantes a fallas que lo siguen. En segundo lugar, la codificación de Reed Solomon puede ser "exorbitado". Después de que se calcula el resultado de dos codificaciones de Solomon de Reed diferentes, se obtendrá un nuevo código Reed Salomon, y el código original de este nuevo código es el exclusivo o de los dos códigos originales originales. Si desea saber por qué funcionan estas dos características, consulte la codificación de aritmética de campo finito y solomón de caña.
Código QR
Una imagen QRCode define algunos descriptores únicos para ayudar a las personas o computadoras a identificarse como un CCODE QR. Este tipo de descriptor varía ligeramente con el tamaño del código QR: cuanto más grande sea la imagen QRCode tiene más descriptores. Sin embargo, para el reconocimiento humano, la característica más obvia es que los símbolos de las cuatro esquinas de la imagen son fijos. Al ver tales cuatro esquinas, los humanos reaccionan instintivamente: este es un código QR.
(De hecho, podemos juzgar el grado de redundancia de la codificación leyendo los dos puntos de píxeles en la esquina superior izquierda de la imagen. La definición del negro es 0 y el blanco es 1. Entonces, si ve 00, es redundancia de nivel L, 01 es m, 10 es Q y 11 es la redundancia de nivel H más alta.
Con el trabajo anterior, podemos conocer fácilmente la ubicación de la información del código original en la imagen. Luego, cambiando la información de su código original, puede cambiar los píxeles en la imagen para que pueda dibujar imágenes dentro. Dicho esto, algunas de las siguientes situaciones pueden hacer que las cosas sean más interesantes.
Hice el código QR para insertar la imagen:
Anteriormente, le proporcioné un código de codificación de codificación de código 1QR gratuito transformado utilizando el proyecto de código abierto ZXing, pero no pudo insertar la imagen. Después de un poco de esfuerzo esta vez, la imagen se insertó con éxito en el código QR y pudo codificar y decodificar. La clave para insertar imágenes se encuentra en el ajuste del coeficiente de tolerancia de fallas del código QR, que se describe en detalle en el código fuente.
interfaz:
Para insertar imágenes en el código QR y decodificarlas normalmente, preste atención a los siguientes dos puntos:
1. El coeficiente de tolerancia a fallas de configurar el código QR debe ser alto;
En el proyecto ZXING, el coeficiente de tolerancia de fallas se puede establecer cuando se genera el código QR:
Establezca codenttype.error_correction en errorcorrectionLevel.h
// Construye el código QR Writer MultiformAtWriter mutiWriter = new com.google.zxing.multiformatwriter (); HASHTABLE SUCHO = new Hashtable (); hint.Add (codeDintType.character_set, "UTF-8"); hint.Add (encodeHintType.error_correction, com.google.zxing.qrcode.decoder.errorcorrectionLevel.h); // Generar el código QR ByTematrix bm = Mutiwriter.enCode (txtmsg.text, com.google.zxing.barcodeformat.qr_code, 300, 300, togin); Mapa de bits img = bm.tobitmap ();
2. El tamaño y la posición de la imagen insertada en el medio deben ser apropiados;
Si la imagen central es demasiado grande y cubre la mayor parte del área del código QR, definitivamente no funcionará. Si es demasiado pequeño, no tendrá un efecto personalizado.
Entonces, ¿qué tan grande es adecuado? Según las características del código QR descrito en el artículo anterior, las tres esquinas con cuadrados son áreas de datos, que no se pueden cubrir. Solo se puede cubrir el área en las esquinas medio y inferior derecha, pero no debe ser demasiado grande.
Después de la prueba, es más apropiado tener un tamaño de imagen pequeño en la cuenta central para 2/7 del ancho total del código QR, que no solo satisface la claridad de la imagen, sino que tampoco afecta los datos cifrados del código QR.
Las imágenes pequeñas se colocan mejor en el centro, y la forma puede ser irregular.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!