Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
QR​​ Code: Crear La Imagen A Partir De Un Texto Y Viceversa
Autor Mensaje
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
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
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
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 usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

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


 
Lista de permisos
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



  

 

cron