QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa


Objetivo: QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
Para los mis amigos de foro gambas-es.org dejo dos códigos en relación con QR Code. Se utilizaran las funciones externas de las librerías de ''OpenCV'' y de ''QRdecoder".

El primero código tiene el fin de conocer el texto del QR Code:
Public Struct QrCodeHeader
model As Integer
version As Integer
level As Integer
charactor_size As Integer
byte_size As Integer
End Struct

Private Const CV_LOAD_IMAGE_UNCHANGED As Short = -1
Private Const DEFAULT_ADAPTIVE_TH_SIZE As Byte = 25
Private Const DEFAULT_ADAPTIVE_TH_DELTA As Byte = 10


Library "libopencv_highgui:2.4.2"

' IplImage* cvLoadImage( const char* filename, int flags )
Private Extern cvLoadImage(filename As String, flagLIC As Integer) As Pointer


Library "libopencv_core:2.4.2"

' void cvReleaseImage(IplImage * image)
Private Extern cvReleaseImage(img As Pointer)


Library "libdecodeqr:0.9.3"

' QrDecoderHandle qr_decoder_open ()
Private Extern qr_decoder_open() As Pointer

' short qr_decoder_decode_image (QrDecoderHandle decoder, IplImage *src, int adaptive_th_size, int adaptive_th_delta)
Private Extern qr_decoder_decode_image(decoderP As Pointer, srcP As Pointer, adaptive_th_size As Integer, adaptive_th_delta As Integer) As Short

' int qr_decoder_get_header (QrDecoderHandle decoder, QrCodeHeader *header)
Private Extern qr_decoder_get_header(decoderP As Pointer, header As Pointer) As Integer

' int qr_decoder_get_body (QrDecoderHandle decoder, unsigned char *buf, int buf_size)
Private Extern qr_decoder_get_body(decoderP As Pointer, buf As Pointer, buf_size As Integer) As Integer

' void qr_decoder_close (QrDecoderHandle decoder)
Private Extern qr_decoder_close(decoderP As Pointer)


Public Sub Button1_Click()

Dim header, imago, decoder, buf As Pointer
Dim qdh As QrCodeHeader


header = Alloc(24)

' Es cargada la imagen del "QR Code":
imago = cvLoadImage("/direccion/de la/imagen/del/Qr Code", CV_LOAD_IMAGE_UNCHANGED)

' Es inicializada la librerías "decoderqr":
decoder = qr_decoder_open()

' Efectúa la decodificación utilizando parámetros por defecto:
qr_decoder_decode_image(decoder, imago, DEFAULT_ADAPTIVE_TH_SIZE, DEFAULT_ADAPTIVE_TH_DELTA)

If IsNull(qr_decoder_get_header(decoder, header)) = False Then

qdh = Header

buf = Alloc(qdh.byte_size + 1)

qr_decoder_get_body(decoder, buf, qdh.byte_size + 1)

' Desreferenciando del "pointer", se muestra el texto del "QR Code":
Print String@(buf)

Endif


' Terminando...:
qr_decoder_close(decoder)
cvReleaseImage(VarPtr(imago))
Free(buf)
Free(header)

End



El segundo tiene el fin de generar el QR Code ​​de un texto (......en console):
Public Struct QRcode
version As Integer
width As Integer
data As Pointer
End Struct


Private Const QR_ECLEVEL_L As Byte = 0 ' Level of error correction: lowest
Private Const QR_MODE_8 As Byte = 2 ' 8-bit data mode


Library "libqrencode:3.4.1"

' QRcode * QRcode_encodeString(const char * String, Int version, QRecLevel level, QRencodeMode hint, Int casesensitive) --> Create a symbol from the string.
Private Extern QRcode_encodeString(testo As String, vers As Integer, level As Integer, hint As Integer, casesensitive As Integer) As QRcode

' void QRcode_free (QRcode *qrcode) --> Free the instance of QRcode class.
Private Extern QRcode_free(qrcode As QRcode)



Public Sub Form_Open()

Dim result As New QRcode
Dim s As String = "http://foro.gambas-es.org" ' texto de lo que se generará el QR Code
Dim ms As Stream
Dim j As Short
Dim b As Byte


result = QRcode_encodeString(s, 0, QR_ECLEVEL_L, QR_MODE_8, 1)

' Utilizamos "Memory-Stream" para desreferenciar en toda la su dimensione la variable de tipo "Pointer" del 3° miembro de la Estructura:
ms = Memory result.data For Read

For j = 0 To (result.width * result.width) - 1

Read #ms, b
If (b And 1) = 1 Then ' Si LSB del byte = 1...
Print String$(2, String.Chr(&2588));
Else ' si en lugar LSB = 0.....
Print Space(2);
Endif

' Si hemos terminado de escribir en la consola una línea del QR Code, entonces vamos a la nueva línea:
If (j + 1) Mod result.width = 0 Then Print

Next

' Terminando.....
QRcode_free(result)

End

Perfil MP  
Objetivo: Re: QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
vuott:

Yo hice algo parecido, pero más simple, usando el comando qrencode y libdecodeqr

http://jsbsan.blogspot.com.es/2014/...nerador-de.html

Saludos

Objetivo: Re: QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
jsbsan escribió: [Ver mensaje]
Yo hice algo parecido, pero más simple

Saludos

Muy bien, jsbsan.
Saludos

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1337s (PHP: 41% SQL: 59%)
Consultas SQL: 28 - Debug off - GZIP Activado