Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

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

QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
Artículo
Responder citando    Descargar mensaje  
Mensaje 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




 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Domingo, 13 Abril 2014, 02:56 ]
 


QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
Comentarios
Responder citando    Descargar mensaje  
Mensaje 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



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Domingo, 13 Abril 2014, 10:37 ]
Responder citando    Descargar mensaje  
Mensaje 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
    



 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Domingo, 13 Abril 2014, 15:12 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron