Differenze tra le versioni di "Creare il QR Code con le risorse della libreria esterna libqrencode"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Mostriamo un semplice codice per creare il QR Code di un testo mediante le risorse della libreria esterna condivisa ''libqrencode.so.4.1.1''.")
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
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