VintaSoft Barcode .NET SDK è l'SDK multipiattaforma professionale per Windows, Linux, macOS e Android, che consente di riconoscere e generare codici a barre QR Code in .NET, WPF, Web, MAUI. Bastano poche righe di codice per aggiungere la capacità di riconoscere e generare codici a barre QR Code alla tua applicazione .NET.
Cos'è un codice a barre QR Code?
Il codice QR è un codice a barre bidimensionale a matrice, il codice a barre bidimensionale più comunemente utilizzato al mondo. Il nome di questo codice a barre riflette l'idea alla base del suo sviluppo: "Quick Response", ovvero riconoscimento rapido con qualsiasi angolo di inclinazione. Una caratteristica distintiva del codice a barre QR Code sono i modelli di ricerca chiaramente distinguibili: quadrati neri agli angoli del codice a barre:
Caratteristiche del codice a barre QR Code
Tutti i produttori moderni utilizzano codici a barre QR Code, descritti nello standard ISO/IEC 18004. Lo standard AIM ITS/97-001 descrive il Codice QR Modello 1, una versione obsoleta del codice a barre, il cui utilizzo è sconsigliato.
Il codice a barre QR Code può memorizzare dati misti di vario tipo in quattro modalità di codifica:
- Alfanumerico (fino a 4296 simboli)
- Byte (fino a 2953 byte)
- Numerico (fino a 7089 cifre)
- Kanji (fino a 1817 simboli)
Il codice a barre QR Code utilizza l'algoritmo di correzione degli errori Reed-Solomon, che consente il riconoscimento dei codici a barre danneggiati. Quando si crea un codice a barre, viene selezionato uno dei 4 livelli di correzione degli errori a seconda delle condizioni d'uso previste: più alto è il livello di correzione degli errori, minore è il numero di dati che possono essere inseriti nel codice a barre.
Codice a barre Micro QR
Il codice a barre Micro QR è una versione compatta del codice a barre QR Code. Il codice a barre Micro QR viene solitamente utilizzato per contrassegnare piccoli pacchi:
Il codice a barre Micro QR ha un solo schema di ricerca. La quantità di dati in questo codice a barre è molto limitata:
- Alfanumerico (fino a 21 simboli)
- Byte (fino a 15 byte)
- Numerico (fino a 35 cifre)
- Kanji (fino a 9 simboli)
Struttura della matrice del codice a barre
Le matrici del codice a barre QR e Micro QR hanno la seguente struttura:
- Zona silenziosa
- Modelli di ricerca
- Informazioni sul formato
- Modelli di temporizzazione
- Modelli di allineamento
- Livello di correzione dati ed errori
Simbolo speciale "Aggiunta struttura"
Il codice a barre QR supporta un simbolo speciale chiamata "Aggiunta struttura", che permette di suddividere i dati in più codici a barre QR Code. Il simbolo è codificato nel codice a barre e permette di determinare chiaramente il numero di parti del codice a barre e il loro ordine. Questa funzione può essere utilizzata per contrassegnare un'area allungata o per posizionare un ampio array di dati.
VintaSoft Barcode .NET SDK consente di suddividere i dati e generare diversi codici a barre QR Code collegati dal simbolo "Aggiunta struttura". L'SDK contiene anche un algoritmo per il ripristino dei dati da un set di codici a barre QR Code suddivisi utilizzando il simbolo "Aggiunta struttura".
Quali codici a barre QR Code riconosce VintaSoft Barcode .NET SDK?
VintaSoft Barcode .NET SDK riconosce tutti i tipi di codici a barre QR e Micro QR. Per il riconoscimento vengono utilizzati algoritmi esclusivi che consentono di riconoscere rapidamente i codici a barre che presentano vari problemi:
- matrice danneggiata
- basso contrasto
- bassa modulazione
- illuminazione non uniforme
- compressione su un lato
- distorsioni spaziali
- codice a barre stampato su una superficie distorta
- numero elevato di codici a barre in un'unica immagine
Ecco un codice C# che mostra come riconoscere i codici a barre QR in un'immagine acquisita da una fotocamera:
/// <summary>
/// Reads QR Code barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadQRCodeBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
// create barcode reader
using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
{
// specify that reader must search for QR Code barcodes
reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.QR;
// read barcodes from image
Vintasoft.Barcode.IBarcodeInfo[] infos = Vintasoft.Barcode.GdiExtensions.ReadBarcodes(reader, bitmap);
// if barcodes are not detected
if (infos.Length == 0)
{
System.Console.WriteLine("No barcodes found.");
}
// if barcodes are detected
else
{
// get information about extracted barcodes
System.Console.WriteLine(string.Format("{0} barcodes found:", infos.Length));
System.Console.WriteLine();
for (int i = 0; i < infos.Length; i++)
{
Vintasoft.Barcode.IBarcodeInfo info = infos[i];
System.Console.WriteLine(string.Format("[{0}:{1}]", i + 1, info.BarcodeType));
System.Console.WriteLine(string.Format("Value: {0}", info.Value));
System.Console.WriteLine(string.Format("Region: {0}", info.Region));
System.Console.WriteLine();
}
}
}
}
Quali codici a barre QR può generare VintaSoft Barcode .NET SDK?
VintaSoft Barcode .NET SDK genera tutti i tipi di codici a barre QR e Micro QR.
Ecco un codice C# che mostra come generare un'immagine raster del codice a barre QR Code:
/// <summary>
/// Returns the QR Code barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetQRCodeBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Ecco un codice C# che mostra come generare un'immagine raster del codice a barre Micro QR:
/// <summary>
/// Returns the Micro QR barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetMicroQRBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.MicroQR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Ecco un codice C# che mostra come generare un'immagine vettoriale (SVG) del codice a barre QR Code:
/// <summary>
/// Returns the QR Code barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetQrCodeBarcodeAsSvgString(string barcodeValue)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = barcodeValue;
// generate QR Code barcode as a SVG string
return barcodeWriter.GetBarcodeAsSvgFile();
}
}