Gambas3 > Programmazione

QR Code: creare l'immagine da un testo e viceversa

<< < (2/2)

vuott:
Vediamo ora un breve codice per generare il QR code di un testo.

Preciso che questo semplicissimo codice non salverà il disegno del QR Code in un file immagine, ma lo mostrerà in console.... abbiate pazienza !    :'(


--- Codice: gambas ---
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:4.1.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://www.gambas-it.org"     ' testo di cui genereremo il 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)
   
' Usiamo i Memory-Stream per dereferenziare in tutta la sua dimensione
' la variabile di tipo "puntatore" del 3° campo della Struttura:
    ms = Memory result.data For Read
   
    For j = 0 To (result.width * result.width) - 1

      Read #ms, b
      If (b And 1) = 1 Then          ' Se il LSB del byte è uguale a 1, allora...
        Print String$(2, String.Chr(&2588));
      Else                                     ' se il LSB è invece uguale a zero, allora....
        Print Space(2);
      Endif
     
' Se abbiamo terminato di scrivere in console una riga del QR Code, allora andiamo a capo:
      If (j + 1) Mod result.width = 0 Then Print

    Next

' Va in chiusura:
    QRcode_free(result)

End

--- Termina codice ---

vuott:
Per analogia di argomento vi segnalo questa pagina:

https://www.gambas-it.org/smf/index.php?topic=5856

Navigazione

[0] Indice dei post

[*] Pagina precedente

Vai alla versione completa