2011-04-04 17 views

Respuesta

1

Como freespace mencionado, no es posible codificar una imagen en esa misma imagen, por varias razones.

He creado un código QR que contiene una URL que contiene (de nuevo) la imagen original:

http://qr.ai/qqq

Realmente creo que es el más cercano que puede obtener.

+0

¡Jaja! Pensamiento ordenado. – naught101

+0

Encontré este divertido meme: http://imgur.com/htayl80 – Arik

5

No lo creo. Cada código QR necesita codificar los datos originales junto con cantidades variables de redundancia.

Para codificar el código QR original, necesita codificar la misma cantidad de información y redundancias adicionales, lo que significa que el resultado no puede ser el mismo ya que codifica más información.

1

Un código QR puede contener max. 4296 caracteres. Supongo que esto es unicode, y que dos bytes se utilizan para representar un personaje. Esto significa que un código QR puede contener un máximo de 7089 bytes, que es suficiente para almacenar una imagen pequeña (como un pequeño código qr).

El único problema aquí, es que la mayoría de los lectores QR esperan que los códigos qr contengan texto (no datos de imagen).

+0

qrencode -o newQR.png \ 'cat originalQR.png \' funciona en Linux, pero no he intentado descifrarlo para ver si saca datos png no dañados. La respuesta de freespace sugiere que no ... – naught101

+0

No unicode, el código QR puede almacenar hasta 2953 bytes. 4296 es alfanumérico solamente (menos de 8 bits por char). – Cfr

3

Existen diferentes tamaños de códigos QR que van desde 21x21 a 177x177. Pueden contener entre 152 y alrededor de 31,000 bits de datos. Desafortunadamente, incluso utilizando 1 bit por "píxel", la cantidad de datos que un código puede contener nunca alcanza el número de bits requerido para almacenarlo.

Hay tamaños, aunque para los que no está lejos. Imagino que algún algoritmo de compresión simple, o incluso ignorar partes comunes como las áreas de calibración, podría llegar a un punto en el que pueda almacenar alguna representación de él en sí mismo. Es factible para mí encontrar una forma de almacenar un código qr de algún tamaño como un código qr del mismo tamaño.

El problema entonces es construir un código que se crea a sí mismo. Con diferentes opciones de corrección de errores, hay espacio para mezclar unos pocos píxeles, lo que ayuda a la probabilidad de que tal cosa sea posible, pero aún tomaría un poco de magia. Tal vez algún tipo de algoritmo genético podría funcionar mejor que la fuerza bruta, pero es posible que necesites leer las especificaciones completas y construirlas inteligentemente a mano. El espacio de búsqueda es bastante grande.

Cuestiones relacionadas