Stai cercando un modo per leggere codici a barre o codici QR dalle immagini in modo programmatico? Se sei uno sviluppatore e devi creare la tua applicazione di lettura di codici a barre? Sei nel posto giusto. I codici a barre sono fondamentali per il tracciamento accurato dell’inventario e della consegna dei prodotti dalla produzione al punto vendita. Possiamo facilmente rilevare, riconoscere e leggere diversi tipi di codici a barre e codici QR nelle applicazioni .NET. In questo articolo, ti mostreremo come leggere un codice a barre da un’immagine in C# seguendo solo pochi semplici passaggi. È possibile utilizzare questo articolo come guida dettagliata per lo sviluppo di applicazioni per lettori di codici a barre o scanner.
In primo luogo, daremo un’occhiata all’API C# Barcode Reader per leggere i codici a barre disponibili nell’immagine di input. Successivamente, illustreremo i passaggi su come rilevare, riconoscere ed estrarre i dati del codice a barre dall’immagine. Troverai passaggi dettagliati e frammenti di codice. Infine, forniremo collegamenti utili per ulteriori miglioramenti. Quindi iniziamo!
In questo articolo verranno trattati i seguenti argomenti:
- API C# per leggere il codice a barre dall’immagine
- Passaggi per leggere il codice a barre da un’immagine
- Leggi codice a barre da bitmap
- Leggi il codice a barre dall’immagine utilizzando Stream
- Come leggere il codice a barre di un tipo specifico
- Leggi codici a barre di più tipi da un’immagine
- Rileva e legge set predefiniti di simbologie
- Rileva e leggi più codici a barre da un’immagine
- Ottieni le coordinate X e Y del codice a barre
- Leggi il codice a barre da una regione specifica dell’immagine
- Leggi codice a barre da più regioni dell’immagine
API C# per leggere il codice a barre dall’immagine
Per leggere un codice a barre da un’immagine, utilizzeremo l’API Aspose.BarCode for .NET. L’API consente di generare, scansionare e leggere un’ampia gamma di simbologie di codici a barre. Consente il rendering di immagini di codici a barre in formato JPEG, TIFF, PNG, BMP e GIF.
L’API fornisce la classe BarCodeReader che consente il riconoscimento di oltre 60 diversi tipi di codici a barre da determinate immagini. Il primo passo per rilevare i codici a barre è specificare l’origine di un’immagine con codici a barre. Questo può essere un file, un oggetto bitmap o un flusso. È quindi necessario specificare le simbologie di destinazione all’interno del parametro DecodeType. Possiamo esaminare tutti i diversi tipi di simbologie supportate specificando DecodeType.AllSupportedTypes. Il metodo ReadBarCodes() di questa classe restituisce un array di codici a barre riconosciuti. La classe BarCodeResult dell’API memorizza i dati del codice a barre riconosciuti come il tipo di codice a barre, il testo del codice, la regione e altri parametri.
L’API consente inoltre di specificare le regioni di un’immagine che il lettore di codici a barre deve leggere. Ciò può essere ottenuto utilizzando un oggetto .NET Rectangle e consente di evitare la necessità di trovare i codici a barre nelle aree dell’immagine che non contengono codici a barre per impostazione predefinita.
Si prega di scaricare la DLL dell’API o installarla utilizzando NuGet.
PM> Install-Package Aspose.BarCode
Leggi il codice a barre da un’immagine usando C#
Possiamo facilmente leggere un codice a barre da un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe BarCodeReader.
- Chiama il metodo readBarCodes() e ottieni i risultati del riconoscimento nell’oggetto della classe BarCodeResult.
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre da un’immagine in C#.
// Questo esempio di codice mostra come leggere il codice a barre da un file di immagine.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Sample.png");
// Leggi il codice a barre e mostra i risultati
foreach(BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leggi codice a barre da bitmap in C#
Possiamo facilmente leggere un codice a barre da un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine usando la classe Bitmap.
- Successivamente, crea un’istanza della classe BarCodeReader con l’oggetto Bitmap.
- Chiama il metodo ReadBarCodes() e ottieni i risultati del riconoscimento nell’oggetto della classe BarCodeResult.
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre da bitmap in C#.
// Questo esempio di codice mostra come leggere il codice a barre dalla bitmap.
// Carica l'immagine in Bitmap
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\Code128.jpg");
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader(bmp);
// Leggi tutti i codici a barre nell'area fornita
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leggi il codice a barre dall’immagine usando Stream in C#
Possiamo anche caricare l’immagine del codice a barre utilizzando un flusso di file e leggere un codice a barre seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe FileStream.
- Successivamente, crea un’istanza della classe BarCodeReader con l’oggetto stream.
- Chiama il metodo ReadBarCodes() e ottieni i risultati del riconoscimento nell’oggetto della classe BarCodeResult.
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre dall’immagine usando Stream in C#.
// Questo esempio di codice mostra come leggere il codice a barre da un'immagine utilizzando il flusso di file.
// Carica immagine
Stream stream = new FileStream("C:\\Files\\BarCode\\MultipleBarcodes.jpeg", FileMode.Open, FileAccess.Read);
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader(stream);
// Leggi tutti i codici a barre nell'area fornita
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leggi il codice a barre di un tipo specifico dall’immagine in C#
Si consiglia di selezionare le simbologie di codici a barre di destinazione che saranno prese in considerazione per il riconoscimento al fine di ridurre al minimo il tempo necessario per il completamento del riconoscimento ed evitare tentativi di riconoscimento di codici a barre obsoleti.
Possiamo specificare il tipo di codice a barre di destinazione e leggere il codice a barre da un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe BarCodeReader.
- Successivamente, imposta un tipo di decodifica del codice a barre, ad esempio Code39Standard.
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre di un tipo specifico da un’immagine usando C#.
// Questo esempio di codice mostra come leggere il codice a barre di un tipo di decodifica specifico da un'immagine.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.Code39Standard);
// Leggere il codice a barre di tipo Code39Extended
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leggi il codice a barre di più tipi dall’immagine in C#
Possiamo anche specificare più tipi di codici a barre seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe BarCodeReader.
- Successivamente, imposta i tipi di decodifica del codice a barre utilizzando il metodo SetBarCodeReadType().
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere codici a barre di più tipi da un’immagine usando C#.
// Questo esempio di codice mostra come leggere codici a barre di più tipi di decodifica da un'immagine.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png");
reader.SetBarCodeReadType(DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
// Leggere i codici a barre
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Possiamo anche specificare più tipi di decodifica nel costruttore della classe BarCodeReader come mostrato di seguito:
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
Leggi un set predefinito di tipi di codici a barre dall’immagine in C#
Possiamo leggere un set predefinito di simbologie per il riconoscimento definito nella classe DecodeTypes. Possiamo impostare uno qualsiasi dei seguenti set predefiniti:
- AllSupportedTypes: tutti i tipi di codici a barre supportati
- Types1D - tutte le simbologie 1D supportate
- Types2D - tutte le simbologie 2D supportate
- PostalTypes: tutte le simbologie postali supportate utilizzate principalmente dai servizi postali
- MostCommonTypes: un insieme di standard di codici a barre più utilizzati definiti
Possiamo specificare un set predefinito seguendo i passaggi indicati di seguito:
- In primo luogo, in primo luogo, carica un’immagine utilizzando la classe BarCodeReader.
- Impostare quindi un tipo di decodifica del codice a barre nel costruttore BarCodeReader o nel metodo SetBarCodeReadType, ad esempio DecodeType.Types2D.
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre usando un set predefinito di simbologie in C#.
// Questo esempio di codice mostra come leggere un codice a barre utilizzando un set predefinito di simbologie.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.Types1D);
// Leggi il codice a barre e mostra i risultati
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Leggi più codici a barre dall’immagine in C#
Possiamo anche leggere tutti i codici a barre disponibili da un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe BarCodeReader.
- Successivamente, imposta un tipo di decodifica del codice a barre come ALLSUPPORTEDTYPES.
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere più codici a barre da un’immagine usando C#.
// Questo esempio di codice mostra come leggere più codici a barre da un'immagine.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.AllSupportedTypes);
// Leggi tutti i tipi di codici a barre disponibili sull'immagine di input
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Ottieni le coordinate X e Y del codice a barre usando C#
Possiamo leggere le coordinate X e Y del codice a barre rilevato da un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine utilizzando la classe BarCodeReader.
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Quindi, scorrere i risultati e verificare se la regione non è nulla.
- Successivamente, ottieni l’array Points che delimita l’area del codice a barre utilizzando i punti.
- Infine, mostra i punti X e Y del codice a barre.
L’esempio di codice seguente mostra come ottenere i punti delle coordinate X e Y di un codice a barre da un’immagine usando C#.
// Questo esempio di codice mostra come leggere il punto della regione X e Y dei codici a barre da un'immagine.
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.AllSupportedTypes);
// Leggi il codice a barre
foreach (BarCodeResult result in reader.ReadBarCodes())
{
if (result.Region != null)
{
// Visualizza le coordinate x e y di tutti i codici a barre rilevati
Point[] point = result.Region.Points;
Console.Out.WriteLine("Top left coordinates: X = " + point[0].X + ", Y = " + point[0].Y);
Console.Out.WriteLine("Bottom left coordinates: X = " + point[1].X + ", Y = " + point[1].Y);
Console.Out.WriteLine("Bottom right coordinates: X = " + point[2].X + ", Y = " + point[2].Y);
Console.Out.WriteLine("Top right coordinates: X = " + point[3].X + ", Y = " + point[3].Y);
}
}
Leggi il codice a barre da una regione specifica dell’immagine in C#
Possiamo leggere un codice a barre da una regione specifica o da un’area di un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, leggi i dati del buffer di un file immagine utilizzando il metodo Bitmap.
- Successivamente, crea un’istanza della classe BarCodeReader. Prende un’immagine, un’area rettangolare e un tipo di decodifica come argomenti.
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre da un’area specifica di un’immagine usando C#.
// Questo esempio di codice mostra come leggere il codice a barre da un'area specifica di un'immagine.
// Carica immagine
Bitmap img = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.jpeg");
// Crea un'istanza della classe BarCodeReader
// e specificare un'area in cui cercare il codice a barre
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 400, 200));
// Leggere tutti i codici a barre nell'area fornita
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leggi il codice a barre da più regioni dell’immagine in C#
Possiamo anche leggere il codice a barre da più regioni di un’immagine seguendo i passaggi indicati di seguito:
- Innanzitutto, carica un’immagine usando la classe Bitmap.
- Successivamente, definisci i rettangoli utilizzando la classe Rectangle.
- Quindi, crea un’istanza della classe BarCodeReader.
- Nel frattempo, chiama SetBarCodeImage() con un oggetto immagine e rettangoli come argomenti.
- Facoltativamente, impostare i tipi di lettura del codice a barre utilizzando il metodo SetBarCodeReadType().
- Successivamente, ottenere i risultati del riconoscimento nell’oggetto della classe BarCodeResult utilizzando il metodo ReadBarCodes().
- Infine, scorri i risultati e mostra il tipo e il testo del codice a barre.
L’esempio di codice seguente mostra come leggere un codice a barre da più aree di un’immagine usando C#.
// Questo esempio di codice mostra come leggere il codice a barre da un'area specifica di un'immagine.
// Carica l'immagine in Bitmap
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.png");
// Rettangolo di un codice a barre 2D nell'immagine sorgente
Rectangle rect2D = new Rectangle(0, 0, 400, 200);
// Rettangolo del codice a barre Code128 nell'immagine sorgente
Rectangle rectCode128 = new Rectangle(450, 100, 600, 180);
// Inizializza il lettore di codici a barre
BarCodeReader reader = new BarCodeReader();
reader.SetBarCodeImage(bmp, new Rectangle[] { rect2D, rectCode128 });
reader.SetBarCodeReadType(DecodeType.AllSupportedTypes);
// Leggi tutti i codici a barre nell'area fornita
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Ottieni una licenza gratuita
Puoi ottenere una licenza temporanea gratuita per provare la libreria senza limiti di valutazione.
Conclusione
In questo articolo abbiamo imparato a:
- Carica il file immagine del codice a barre;
- Leggi le immagini come bitmap o utilizzando il flusso di file;
- riconoscere codici a barre di diverso tipo da un’immagine;
- leggere le coordinate del codice a barre;
- rilevare e leggere più codici a barre da una singola immagine;
- rilevare e leggere i codici a barre da un’area specifica di un’immagine.
Oltre a leggere il codice a barre da un’immagine in C#, puoi saperne di più su Aspose.BarCode per l’API .NET usando documentation. In caso di qualsiasi ambiguità, non esitate a contattarci sul nostro forum di supporto gratuito.