Gambas3 > Programmazione
QR Code: creare l'immagine da un testo e viceversa
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
Vai alla versione completa