Differenze tra le versioni di "Creare il QR Code con le risorse della libreria esterna libqrencode"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
Mostriamo un semplice codice per creare il QR Code di un testo mediante le risorse della libreria esterna condivisa ''libqrencode.so.4.1.1''. | Mostriamo un semplice codice per creare il QR Code di un testo mediante le risorse della libreria esterna condivisa ''libqrencode.so.4.1.1''. | ||
− | + | <BR>Il QR Code sarà disegnato in un Oggetto ''Image'', che sarà assegnato a una ''PictureBox'', perché sia mostrato il disegno del QR Code, e del quale si produrrà un file immagine. | |
− | + | Private Const XY As Integer = 5 | |
− | < | + | Private Const LATO As Integer = 4 |
+ | |||
+ | |||
+ | Library "libqrencode:4.1.1" | ||
+ | |||
+ | Public Struct QRcode | ||
+ | version As Integer | ||
+ | width As Integer | ||
+ | data As Pointer | ||
+ | End Struct | ||
+ | |||
+ | Private Enum QR_ECLEVEL_L = 0, QR_ECLEVEL_M, QR_ECLEVEL_Q, QR_ECLEVEL_H | ||
+ | Private Const QR_MODE_8 As Integer = 2 | ||
+ | |||
+ | <FONT Color=gray>' ''QRcode * QRcode_encodeString(const char * string, Int version, QRecLevel level, QRencodeMode hint, Int casesensitive)'' | ||
+ | ' ''Create a symbol from the string.''</font> | ||
+ | Private Extern QRcode_encodeString(string_ As String, version As Integer, level As Integer, hint As Integer, casesensitive As Integer) As QRcode | ||
+ | |||
+ | <FONT Color=gray>' ''void QRcode_free (QRcode *qrcode)'' | ||
+ | ' ''Free the instance of QRcode class.''</font> | ||
+ | Private Extern QRcode_free(qrcode As QRcode) | ||
+ | |||
+ | |||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim t As String | ||
+ | Dim qrc As QRcode | ||
+ | Dim c, x, y As Integer | ||
+ | Dim b As Byte | ||
+ | Dim im As Image | ||
+ | |||
+ | <FONT Color=gray>' ''Testo di cui genera il QR Code:''</font> | ||
+ | t = "www.gambas-it.org" | ||
+ | |||
+ | qrc = QRcode_encodeString(t, 0, QR_ECLEVEL_L, QR_MODE_8, 1) | ||
+ | |||
+ | im = New Image(qrc.width * LATO + (XY * 2), qrc.width * LATO + (XY * 2), Color.White, Image.Standard) | ||
+ | |||
+ | x = XY | ||
+ | y = XY | ||
+ | |||
+ | With Paint | ||
+ | .Begin(im) | ||
+ | For c = 0 To (qrc.width * qrc.width) - 1 | ||
+ | b = Byte@(qrc.data + c) | ||
+ | If (b And 1) = 1 Then <FONT Color=gray>' ''Se il LSB del byte è uguale a 1, allora...''</font> | ||
+ | .Rectangle(x, y, LATO, LATO) | ||
+ | .Fill | ||
+ | Else <FONT Color=gray>' ''se il LSB è invece uguale a zero, allora....''</font> | ||
+ | .DrawRect(x, y, LATO, LATO, Color.Transparent) | ||
+ | Endif | ||
+ | x += LATO | ||
+ | <FONT Color=gray>' ''Se ha terminato di disegnare una riga del QR Code, allora va a capo:''</font> | ||
+ | If (c + 1) Mod qrc.width = 0 Then | ||
+ | x = XY | ||
+ | y += LATO | ||
+ | Endif | ||
+ | Next | ||
+ | .End | ||
+ | End With | ||
+ | |||
+ | im.Save("/tmp/qrcode.png", 100) | ||
+ | |||
+ | PictureBox1.Image = im | ||
+ | |||
+ | QRcode_free(qrc) | ||
+ | |||
+ | End |
Versione attuale delle 07:48, 18 giu 2023
Mostriamo un semplice codice per creare il QR Code di un testo mediante le risorse della libreria esterna condivisa libqrencode.so.4.1.1.
Il QR Code sarà disegnato in un Oggetto Image, che sarà assegnato a una PictureBox, perché sia mostrato il disegno del QR Code, e del quale si produrrà un file immagine.
Private Const XY As Integer = 5 Private Const LATO As Integer = 4 Library "libqrencode:4.1.1" Public Struct QRcode version As Integer width As Integer data As Pointer End Struct Private Enum QR_ECLEVEL_L = 0, QR_ECLEVEL_M, QR_ECLEVEL_Q, QR_ECLEVEL_H Private Const QR_MODE_8 As Integer = 2 ' QRcode * QRcode_encodeString(const char * string, Int version, QRecLevel level, QRencodeMode hint, Int casesensitive) ' Create a symbol from the string. Private Extern QRcode_encodeString(string_ As String, version 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 t As String Dim qrc As QRcode Dim c, x, y As Integer Dim b As Byte Dim im As Image ' Testo di cui genera il QR Code: t = "www.gambas-it.org" qrc = QRcode_encodeString(t, 0, QR_ECLEVEL_L, QR_MODE_8, 1) im = New Image(qrc.width * LATO + (XY * 2), qrc.width * LATO + (XY * 2), Color.White, Image.Standard) x = XY y = XY With Paint .Begin(im) For c = 0 To (qrc.width * qrc.width) - 1 b = Byte@(qrc.data + c) If (b And 1) = 1 Then ' Se il LSB del byte è uguale a 1, allora... .Rectangle(x, y, LATO, LATO) .Fill Else ' se il LSB è invece uguale a zero, allora.... .DrawRect(x, y, LATO, LATO, Color.Transparent) Endif x += LATO ' Se ha terminato di disegnare una riga del QR Code, allora va a capo: If (c + 1) Mod qrc.width = 0 Then x = XY y += LATO Endif Next .End End With im.Save("/tmp/qrcode.png", 100) PictureBox1.Image = im QRcode_free(qrc) End