In questo post vediamo come creare un QrCode usando QRGen che è una libreria che mette a disposizione una api basata sul builder pattern che permette di creare in maniera semplice un’immagine QrCode.
Settiamo le dipendenze Maven
QRGen non è hostato sul repository Maven Central ma è disponibile su jitpack.io. Quindi oltre alle dipendenze e’ necessario settare il repository nel pom.xml:
<dependencies>
<dependency>
<groupId>com.github.kenglxn.qrgen</groupId>
<artifactId>javase</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Fluent Builder API per la generazione di QRCode
Vediamo un primo esempio dell’utilizzo della libreria:
FileOutputStream fos = new FileOutputStream("/home/giuseppe/myQRCode.jpg");
QRCode.from("www.losviluppatore.it") // settiamo il testo da codificare
.to(ImageType.JPG) // settiamo il tipo di immagine da generare
.withSize(250, 250) // settiamo la dimensione dell'immagine
.writeTo(fos); // scriviamo l'immagine su un file
Questo è il risultato:

Cambiamo i colori del QRCode
E’ possibile cambiare i colori di default (bianco e nero) usando il formato RGB con l’alpha (trasparenza) 0x(alpha: 1 byte)(RGB: 3 bytes). E’ possibile usare la classe java.awt.Color per settare velocemente i colori base.
FileOutputStream fos = new FileOutputStream("/home/giuseppe/myColoredQRCode.jpg");
QRCode.from("www.losviluppatore.it")
.to(ImageType.JPG)
.withColor(Color.RED.getRGB(), Color.YELLOW.getRGB()) //colore principale rosso su sfondo giallo
.withSize(250, 250)
.withErrorCorrection(ErrorCorrectionLevel.Q) // settiamo il livello di correzione
.writeTo(fos);
E questo è il risultato:

E’ possibile utilizzare QRGen anche su android: Esiste uno speciale metodo bitmap() che restituisce un android.graphics.Bitmap da usare all’interno di una ImageView.
Per maggiori informazioni sulle feature e l’uso della libreria : QRGen: a simple QRCode generation api for java built on top ZXING
Grazie per la guida, fatta molto bene.
Una curiosità: vorrei ottenere il qrcode partendo dal file json
passando per CBOR , COSE, COMPRESSIONE E BASE45
Grazie
Tano