# Barcodes & QRs in C# & VB.NET Applications
Odczytywanie i pisanie kodow kreskowych w jezyku C# i wszystkich innych jezykach .NET to latwy proces z nasza biblioteka oprogramowania IronBarcode.
## Zainstaluj IronBarcode
Pierwszym krokiem w podrozy bedzie zainstalowanie IronBarcode, co mozna zrobic pobierajac z NuGet lub [pobierajac DLL](https://www.nuget.org/packages/Barcode/).
Aby zainstalowac pakiet NuGet IronBarcode, mozesz uzyc menedzera pakietow NuGet dla Visual Studio:
```shell
:ProductInstall
```
Alternatywnie, mozesz zainstalowac rowniez za pomoca .NET CLI:
```shell
:InstallCmd dotnet add package IronBarCode
```
## Odczyt kodu kreskowego lub QR code
Odczyt kodu kreskowego wymaga tylko jednej linijki kodu z IronBarcode.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
```
Za pomoca tej jednej linijki kodu masz mozliwosc wykrycia i zeskanowania wszystkich typow kodow kreskowych z dokumentu wejsciowego z wyjatkowa wydajnoscia - wszystko, czego potrzebujesz, w jednym kroku! Ta metoda obsluguje szeroki wachlarz formatow obrazow, takich jak JPEG, PNG i BMP, a takze PDFow i formatow wieloklatkowych jak GIF i TIFF. Dostepne sa opcje konfiguracji dostosowywania dla ulepszonej wydajnosci.
Aby poprawic szybkosc czytania, mozna utworzyc obiekt `BarcodeReaderOptions` z ustawieniem `Speed` skonfigurowanym dla lepszej wydajnosci. Domyslnie jest `Balanced`, ale opcja `Faster` jest dostepna, aby pominac niektore kontrole.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
```
Mozesz rowniez ustawic `ScanMode` na `OnlyBasicScan`, aby zoptymalizowac proces czytania.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
```
Inne konfiguracje obejmuja okreslenie formatow kodow kreskowych do skanowania, co moze pomoc w przyspieszeniu przetwarzania poprzez zmniejszenie niepotrzebnych skanow.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
```
## Pisanie kodow kreskowych
Aby zapisac kody kreskowe przy uzyciu IronBarcode, uzywamy klasy `BarcodeWriter`.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
```
## Stylizowanie kodow kreskowych
IronBarcode oferuje kilka opcji manipulacji wizualnym wygladem kodu kreskowego.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
```
## Eksport kodow kreskowych jako HTML
IronBarcode moze eksportowac kody kreskowe jako dokumenty HTML lub jako czesc tresci HTML.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
```
## Generowanie kodow QR
Dla kodow QR uzyj klasy `QRCodeWriter`, ktora oferuje dodatkowa konfiguracje dla specyficznych cech QR, takich jak korekcja bledow.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
```
## Obslugiwane formaty kodow kreskowych
IronBarcode obsluguje szeroka game powszechnie uzywanych formatow kodow kreskowych do odczytu i pisania:
- **QR**, **Micro QR** i **Rectangular Micro QR (rMQR)** kody.
- Inne dwuwymiarowe kody kreskowe, takie jak **Aztec**, **Data Matrix**, **MaxiCode** i **PDF417**.
- Stosowane liniowe kody kreskowe, takie jak **Databar**.
- Konwencjonalne jednowymiarowe formaty kodow kreskowych, takie jak **UPC-A**, **UPC-E**, **EAN-8**, **EAN-13**, **Codabar**, **ITF**, **MSI** i **Plessey**.
## Dlaczego warto wybrać IronBarcode?
IronBarcode oferuje przyjazne, latwe w uzyciu API dla deweloperow pozwalajace na odczyt i zapis kodow kreskowych dla .NET, ktore optymalizuje sie pod katem dokladnosci, precyzji i szybkiej obslugi w rzeczywistych sytuacjach.
Klasa `BarcodeWriter`, na przyklad, automatycznie weryfikuje i koryguje 'sumy kontrolne' na kodach kreskowych UPCA i UPCE oraz obsluguje ograniczenia formatu numerycznego. IronBarcode pomaga deweloperom wybrac najodpowiedniejszy format kodu kreskowego dla ich danych.
Biblioteka jest solidna, z technikami wstepnego przetwarzania obrazow, takimi jak automatyczna rotacja i redukcja szumow na obrazach, aby zmaksymalizowac sukces wykrywania kodow kreskowych.
## Ruszając naprzód
Aby w pelni korzystac z IronBarcode, zachecamy do przeczytania samouczkow w tej sekcji dokumentacji i odwiedzenia nas na [GitHub](https://github.com/iron-software).
Odczytywanie i pisanie kodow kreskowych w jezyku C# i wszystkich innych jezykach .NET to latwy proces z nasza biblioteka oprogramowania IronBarcode.
Zainstaluj IronBarcode
Pierwszym krokiem w podrozy bedzie zainstalowanie IronBarcode, co mozna zrobic pobierajac z NuGet lub pobierajac DLL.
Aby zainstalowac pakiet NuGet IronBarcode, mozesz uzyc menedzera pakietow NuGet dla Visual Studio:
PM > Install-Package BarCode
Install-Package BarCode
Alternatywnie, mozesz zainstalowac rowniez za pomoca .NET CLI:
> dotnet add package IronBarCode
dotnet add package IronBarCode
Odczyt kodu kreskowego lub QR code
Odczyt kodu kreskowego wymaga tylko jednej linijki kodu z IronBarcode.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");if (results != null){ foreach (BarcodeResult result in results) {Console.WriteLine(result.Text); }}
using IronBarCode;
BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine(result.Text);
}
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg")If results IsNot Nothing Then For Each result AsBarcodeResultIn resultsConsole.WriteLine(result.Text) Next resultEnd If
Imports IronBarCode
Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
For Each result As BarcodeResult In results
Console.WriteLine(result.Text)
Next result
End If
Za pomoca tej jednej linijki kodu masz mozliwosc wykrycia i zeskanowania wszystkich typow kodow kreskowych z dokumentu wejsciowego z wyjatkowa wydajnoscia - wszystko, czego potrzebujesz, w jednym kroku! Ta metoda obsluguje szeroki wachlarz formatow obrazow, takich jak JPEG, PNG i BMP, a takze PDFow i formatow wieloklatkowych jak GIF i TIFF. Dostepne sa opcje konfiguracji dostosowywania dla ulepszonej wydajnosci.
Aby poprawic szybkosc czytania, mozna utworzyc obiekt BarcodeReaderOptions z ustawieniem Speed skonfigurowanym dla lepszej wydajnosci. Domyslnie jest Balanced, ale opcja Faster jest dostepna, aby pominac niektore kontrole.
using IronBarCode;BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions(){ExpectMultipleBarcodes = false,ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),};BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);if (result != null){Console.WriteLine(result.First().Text);}
using IronBarCode;
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};
BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
Console.WriteLine(result.First().Text);
}
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ExpectMultipleBarcodes = False, .ExpectBarcodeTypes = BarcodeEncoding.QRCodeOrBarcodeEncoding.Code128, .CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)}Private result AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)If result IsNot Nothing ThenConsole.WriteLine(result.First().Text)End If
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ExpectMultipleBarcodes = False,
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}
Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
Console.WriteLine(result.First().Text)
End If
Mozesz rowniez ustawic ScanMode na OnlyBasicScan, aby zoptymalizowac proces czytania.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");// Loop through the resultsforeach (BarcodeResult result in results){ string value = result.Value; Bitmap img = result.BarcodeImage; BarcodeEncoding barcodeType = result.BarcodeType; byte[] binary = result.BinaryValue;Console.WriteLine(result.Value);}
using IronBarCode;
BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");
// Loop through the results
foreach (BarcodeResult result in results)
{
string value = result.Value;
Bitmap img = result.BarcodeImage;
BarcodeEncoding barcodeType = result.BarcodeType;
byte[] binary = result.BinaryValue;
Console.WriteLine(result.Value);
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")' Loop through the resultsFor Each result AsBarcodeResultIn results Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result
Imports IronBarCode
Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")
' Loop through the results
For Each result As BarcodeResult In results
Dim value As String = result.Value
Dim img As Bitmap = result.BarcodeImage
Dim barcodeType As BarcodeEncoding = result.BarcodeType
Dim binary() As Byte = result.BinaryValue
Console.WriteLine(result.Value)
Next result
Inne konfiguracje obejmuja okreslenie formatow kodow kreskowych do skanowania, co moze pomoc w przyspieszeniu przetwarzania poprzez zmniejszenie niepotrzebnych skanow.
using IronBarCode;BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");// Loop through the resultsforeach (BarcodeResult result in pagedResults){ int pageNumber = result.PageNumber; string value = result.Value; Bitmap img = result.BarcodeImage; BarcodeEncoding barcodeType = result.BarcodeType; byte[] binary = result.BinaryValue;Console.WriteLine(result.Value);}// or from a multi-page TIFF scan with image correction:BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions{Speed = ReadingSpeed.Detailed,ExpectMultipleBarcodes = true,ExpectBarcodeTypes = BarcodeEncoding.Code128,Multithreaded = false,RemoveFalsePositive = false,ImageFilters = null});
using IronBarCode;
BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");
// Loop through the results
foreach (BarcodeResult result in pagedResults)
{
int pageNumber = result.PageNumber;
string value = result.Value;
Bitmap img = result.BarcodeImage;
BarcodeEncoding barcodeType = result.BarcodeType;
byte[] binary = result.BinaryValue;
Console.WriteLine(result.Value);
}
// or from a multi-page TIFF scan with image correction:
BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.Code128,
Multithreaded = false,
RemoveFalsePositive = false,
ImageFilters = null
});
ImportsIronBarCodePrivate pagedResults AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")' Loop through the resultsFor Each result AsBarcodeResultIn pagedResults Dim pageNumber AsInteger = result.PageNumber Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result' or from a multi-page TIFF scan with image correction:Dim multiFrameResults AsBarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptionsWith { .Speed = ReadingSpeed.Detailed, .ExpectMultipleBarcodes = True, .ExpectBarcodeTypes = BarcodeEncoding.Code128, .Multithreaded = False, .RemoveFalsePositive = False, .ImageFilters = Nothing})
Imports IronBarCode
Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")
' Loop through the results
For Each result As BarcodeResult In pagedResults
Dim pageNumber As Integer = result.PageNumber
Dim value As String = result.Value
Dim img As Bitmap = result.BarcodeImage
Dim barcodeType As BarcodeEncoding = result.BarcodeType
Dim binary() As Byte = result.BinaryValue
Console.WriteLine(result.Value)
Next result
' or from a multi-page TIFF scan with image correction:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.Code128,
.Multithreaded = False,
.RemoveFalsePositive = False,
.ImageFilters = Nothing
})
Pisanie kodow kreskowych
Aby zapisac kody kreskowe przy uzyciu IronBarcode, uzywamy klasy BarcodeWriter.
using IronBarCode;GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);myBarcode.SaveAsImage("myBarcode.png");
using IronBarCode;
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode
Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
Stylizowanie kodow kreskowych
IronBarcode oferuje kilka opcji manipulacji wizualnym wygladem kodu kreskowego.
using IronBarCode;GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);myBarcode.AddAnnotationTextAboveBarcode("Product URL:");myBarcode.AddBarcodeValueTextBelowBarcode();myBarcode.SetMargins(100);myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);// All major image formats supported as well as PDF and HTMLmyBarcode.SaveAsPng("myBarcode.png");
using IronBarCode;
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);
// All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png");
ImportsIronBarCodePrivate myBarcode AsGeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)myBarcode.AddAnnotationTextAboveBarcode("Product URL:")myBarcode.AddBarcodeValueTextBelowBarcode()myBarcode.SetMargins(100)myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)' All major image formats supported as well as PDF and HTMLmyBarcode.SaveAsPng("myBarcode.png")
Imports IronBarCode
Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)
' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
Eksport kodow kreskowych jako HTML
IronBarcode moze eksportowac kody kreskowe jako dokumenty HTML lub jako czesc tresci HTML.
using IronBarCode;QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Dla kodow QR uzyj klasy QRCodeWriter, ktora oferuje dodatkowa konfiguracje dla specyficznych cech QR, takich jak korekcja bledow.
using IronBarCode;using IronSoftware.Drawing;QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
using IronBarCode;
using IronSoftware.Drawing;
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
ImportsIronBarCodeImportsIronSoftware.DrawingPrivate qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")Private myQRCodeWithLogo AsGeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
Imports IronBarCode
Imports IronSoftware.Drawing
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
Obslugiwane formaty kodow kreskowych
IronBarcode obsluguje szeroka game powszechnie uzywanych formatow kodow kreskowych do odczytu i pisania:
QR, Micro QR i Rectangular Micro QR (rMQR) kody.
Inne dwuwymiarowe kody kreskowe, takie jak Aztec, Data Matrix, MaxiCode i PDF417.
Stosowane liniowe kody kreskowe, takie jak Databar.
Konwencjonalne jednowymiarowe formaty kodow kreskowych, takie jak UPC-A, UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI i Plessey.
Dlaczego warto wybrać IronBarcode?
IronBarcode oferuje przyjazne, latwe w uzyciu API dla deweloperow pozwalajace na odczyt i zapis kodow kreskowych dla .NET, ktore optymalizuje sie pod katem dokladnosci, precyzji i szybkiej obslugi w rzeczywistych sytuacjach.
Klasa BarcodeWriter, na przyklad, automatycznie weryfikuje i koryguje 'sumy kontrolne' na kodach kreskowych UPCA i UPCE oraz obsluguje ograniczenia formatu numerycznego. IronBarcode pomaga deweloperom wybrac najodpowiedniejszy format kodu kreskowego dla ich danych.
Biblioteka jest solidna, z technikami wstepnego przetwarzania obrazow, takimi jak automatyczna rotacja i redukcja szumow na obrazach, aby zmaksymalizowac sukces wykrywania kodow kreskowych.
Ruszając naprzód
Aby w pelni korzystac z IronBarcode, zachecamy do przeczytania samouczkow w tej sekcji dokumentacji i odwiedzenia nas na GitHub.
Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.