# Jak generować formaty danych w języku C# za pomocą IronBarcode
IronBarcode zapewnia wiele formatów wyjściowych odczytów kodów kreskowych, w tym `BarcodeImage`, `BarcodeType`, `BinaryValue`, współrzędne, wymiary, numery stron, orientację, tekst i właściwości wartości. Formaty te umożliwiają programowe przetwarzanie danych z BarCodes w różnych zastosowaniach.
Zamiast po prostu odczytywać BARCODE i drukować wartości w konsoli, IronBarcode oferuje znacznie więcej. Oferuje kilka formatów wyjściowych, które ułatwiają użytkownikom przetwarzanie odczytanych wyników. Formaty te obejmują takie właściwości, jak obraz BarCode, typ BarCode, `BinaryValue`, współrzędne, wysokość, szerokość, numer strony, BarCode, orientacja strony, `text` oraz `value`.
Użytkownicy mogą dalej modyfikować te właściwości w ramach programu. Zobaczmy, jak korzystać z tych właściwości i w jakich sytuacjach mogą się one przydać.
*as-heading:2(Szybki start: Odczyt wartości i typu BarCode w jednym wierszu)*
Ten przykład pokazuje, jak odczytać kod kreskowy z obrazu za pomocą IronBarcode – wystarczy jedna linijka kodu, aby załadować, a następnie natychmiast wydrukować wartość i typ kodu kreskowego. Idealne rozwiązanie do szybkiego rozpoczęcia pracy. Bardziej szczegółowe przykłady znajdziesz w [przewodniku](https://ironsoftware.com/csharp/barcode/examples/barcode-quickstart/) ["BarCode Quickstart](https://ironsoftware.com/csharp/barcode/examples/barcode-quickstart/)".
```cs
:title=Grab Barcode Text & Type Instantly
var result = IronBarCode.BarcodeReader.Read("input.png");
Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
```
<div class="hsg-featured-snippet">
<h3>Minimalny przebieg pracy (5 kroków)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://www.nuget.org/packages/BarCode/">Pobierz bibliotekę C# do odczytu kodów kreskowych</a></li>
<li>Przygotuj plik PDF i obraz do wykrywania kodów kreskowych</li>
<li>Uzyskaj dostęp do wykrytego typu BARCODE i obrazu</li>
<li>Pobierz kod kreskowy BARCODE <code>x</code> i <code>y</code> współrzędne, a także jego <code>height</code> i <code>width</code></li>
<li>Przeczytaj BarCode <code>text</code> i <code>value</code></li>
</ol>
</div>
## Jakie są dostępne formaty wyjściowe i ich zastosowania?
`BarcodeResult` przechowuje różne przydatne właściwości. Właściwości te wymieniono poniżej:
- `BarcodeImage`
- `BarcodeType`
- `BinaryValue`
- Współrzędne, `Height` & `Width`
- `PageNumber`
- `Barcode` oraz `PageOrientation`
- `Text` & `Value`
Każda właściwość służy konkretnym celom w procesach przetwarzania BarCode. Niezależnie od tego, czy tworzysz system zarządzania zapasami, proces przetwarzania dokumentów czy aplikację do kontroli jakości, te formaty danych zapewniają elastyczność niezbędną do [odczytu BARCODE-ów z różnych źródeł](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-images/).
### Jak mogę wyodrębnić i zapisać obrazy BarCode'ów?
Po odczytaniu obrazu przez IronBarcode BarCODE-y znalezione na obrazie są zapisywane w `BarcodeResult` jako właściwość `BarcodeImage` typu `AnyBitmap`. Właściwość `BarcodeImage` przechowuje znalezione obrazy BarCode. Użytkownicy mogą pobrać ten obiekt w celu dalszego przetwarzania obrazu lub zapisania go jako stałą kopię. Zapewnia to wydajność i łatwość użytkowania poprzez wyeliminowanie dodatkowego kodu potrzebnego do wyodrębniania obrazów BARCODE-ów z obrazu.
Spójrz na poniższy fragment kodu, który pokazuje możliwy przypadek użycia tego formatu wyjściowego:
```csharp
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read barcode from PDF file
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Create list for barcodes
List<AnyBitmap> barcodeList = new List<AnyBitmap>();
foreach (BarcodeResult barcode in result)
{
barcodeList.Add(barcode.BarcodeImage);
}
// Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
```
Powyższy fragment kodu ilustruje jeden z przykładów zastosowania tego formatu wyjściowego. W szczególności tworzy wielostronicowy obraz TIFF na podstawie kodów kreskowych wykrytych w dokumencie PDF. Najpierw skanujemy lub wykrywamy kody kreskowe w przykładowym pliku PDF. Następnie tworzymy listę `AnyBitmap`, w której przechowujemy informacje z właściwości `BarcodeImage`. Na koniec wykorzystujemy tę listę do wygenerowania wielostronicowego pliku TIFF przy użyciu metody `CreateMultiFrameTiff`. Technika ta jest szczególnie przydatna podczas przetwarzania [wielostronicowych plików GIF i TIFF](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-multi-page-frame-tiff-gif/).
`BarcodeImage` właściwość z `BarcodeResult` przechowuje tylko obrazy BARCODE-ów znalezionych podczas odczytu, a nie cały obraz wejściowy.
### Jak programowo rozpoznać różne typy BarCodes?
Ta właściwość pomaga określić, jaki typ BARCODE występuje na obrazku lub w dokumencie wejściowym. Ograniczeniem jest jednak to, że typ BARCODE na obrazie musi być obsługiwany i czytelny dla IronBarcode. Aby dowiedzieć się więcej o typach kodów kreskowych obsługiwanych przez IronBarcode, zapoznaj się z tym [artykułem](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-images/#expectbarcodetypes). Dodatkowo zapoznaj się z pełną listą [obsługiwanych formatów BARCODE](https://ironsoftware.com/csharp/barcode/get-started/supported-barcode-formats/), aby upewnić się, że spełniają one Twoje konkretne wymagania.
Poniższy fragment kodu pokazuje, jak pobrać wartości kodów kreskowych i typ kodu kreskowego z obrazu, drukując te wartości w konsoli.
```csharp
using IronBarCode;
using System;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("bc3.png");
// Output barcode type to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);
}
```
W powyższym fragmencie kodu odczytujemy BARCODE, wywołując metodę `BarcodeReader.Read()` na obrazku wejściowym. Zwraca to obiekt `BarcodeResults`, który przechowuje wszystkie `BarcodeResult` uzyskane po odczytaniu wszystkich BARCODE'ów dostępnych na obrazie. Następnie iterujemy przez obiekt `BarcodeResults`, aby pobrać `BarcodeResult` i wyświetlić BARCODE `value` oraz `type` na konsoli. To podejście działa bezproblemowo z różnymi typami kodów kreskowych, w tym z formatami specjalistycznymi, takimi jak [kody kreskowe Code 39](https://ironsoftware.com/csharp/barcode/how-to/read-code39-barcodes/).
### Kiedy należy używać wyjścia wartości binarnej?
Using IronBarcode, użytkownicy mogą pobrać tablicę bajtów kodu kreskowego `value`, uzyskując dostęp do właściwości `BinaryValue` z obiektu `BarcodeResult`. Pozwala to użytkownikom na dalszą obróbkę BarCoda `value` w programie. Wynik w formacie binarnym `value` jest szczególnie przydatny podczas pracy z danymi zaszyfrowanymi, załącznikami zakodowanymi w BARCODE-ach lub podczas integracji z systemami wymagającymi przetwarzania danych na poziomie bajtów.
Poniższy fragment kodu ilustruje jeden z przykładów pobierania BARCODE-a `value` jako danych binarnych:
```csharp
using IronBarCode;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");
int i = 1;
foreach (BarcodeResult barcode in result)
{
var binaryValue = barcode.BinaryValue;
var barcodeType = IronBarCode.BarcodeEncoding.QRCode;
// Create QR code
GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType);
// Export QR code
generatedBarcode.SaveAsPng($"qrFromBinary{i}.png");
i++;
}
```
Analizując powyższy fragment kodu, stworzyliśmy prosty program, który przekształca wiele BarCodes w obrazie w oddzielne, nowe pliki zakodowane binarnie. Na początku skanujemy barcody na przykładowym obrazku PNG. Po wykryciu tych kodów kreskowych przeglądamy je, uzyskujemy dostęp do właściwości `BinaryValue` i wykorzystujemy ją do tworzenia nowych plików binarnych. Technika ta jest szczególnie przydatna, gdy trzeba [odczytać wiele BARCODE'ów](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-images/) i przetworzyć ich dane binarne indywidualnie.
### Jak uzyskać dostęp do lokalizacji i wymiarów BarCode?
Kolejną właściwością obiektu `BarcodeResult`, do której użytkownicy mają dostęp, są współrzędne BARCODE, w tym `X1`, `Y1` i `X2`, `Y2`, a także jego `Height` i `Width` w pliku graficznym lub dokumencie. Te właściwości są przydatne, gdy użytkownicy muszą uzyskać informacje o położeniu i wymiarach BarCode'a. Te informacje przestrzenne mają kluczowe znaczenie dla aplikacji wymagających precyzyjnego pozycjonowania, takich jak automatyczne przetwarzanie dokumentów, systemy kontroli jakości lub podczas wdrażania [obszarów wycinania](https://ironsoftware.com/csharp/barcode/how-to/set-crop-region/) w celu zoptymalizowanego skanowania BARCODE.
Zobaczmy, gdzie znajduje się BARCODE i jakie są jego wymiary.
```csharp
using IronBarCode;
using IronSoftware.Drawing;
using System.Linq;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");
AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");
foreach (BarcodeResult barcode in result)
{
PointF[] barcodePoints = barcode.Points;
float x1 = barcodePoints.Select(b => b.X).Min();
float y1 = barcodePoints.Select(b => b.Y).Min();
Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
bitmap = bitmap.Redact(rectangle, Color.Magenta);
// Save the image
bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);
}
```
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 49%;"><img src="/static-assets/barcode/how-to/output-data-formats/multiple-barcodes.png" alt="Trzy próbki kodów kreskowych (A, B, C) przedstawiające różne zakodowane dane o podobnych wzorach wizualnych" class="img-responsive add-shadow" /><p class="competitors__download-link" style="color: #181818; font-style: italic;">Przed redakcją</p></div>
<div class="competitors__card" style="width: 49%;"><img src="/static-assets/barcode/how-to/output-data-formats/redacted.png" alt="Trzy zredagowane bloki treści z nieczytelnymi fragmentami tekstu" class="img-responsive add-shadow" /><p class="competitors__download-link" style="color: #181818; font-style: italic;">Po redakcji</p></div>
</div>
Powyższy fragment kodu odczytuje wiele kodów kreskowych znajdujących się w pliku graficznym. Aby to osiągnąć, używamy kombinacji dwóch bibliotek: IronBarcode i IronDrawing. Aby uzyskać obiekt `BarcodeResult` i wyodrębnić z niego właściwości, najpierw odczytujemy BarCODES dostępne w pliku obrazu za pomocą metody `BarcodeReader.Read()`. Jednocześnie plik obrazu wejściowego musi zostać przekonwertowany na obiekt `AnyBitmap`, aby można było zastosować metodę redagowania do obrazu. Gdy już mamy obiekt `BarcodeResults`, możemy zastosować pętlę i iterować przez niego, aby uzyskać `X1`, `Y1`, `Width` oraz `Height` każdego BARCODE'a dostępnego na obrazie i wykorzystać je we właściwościach `CropRectangle` metody `AnyBitmap.Redact()`.
### Dlaczego numer strony jest ważny w przypadku dokumentów wielostronicowych?
Użytkownicy mogą uzyskać numer strony, na której znaleziono BarCode. Jest to przydatna funkcja dla użytkowników korzystających z wielostronicowych dokumentów zawierających wiele BARCODE-ów, którzy muszą znać lokalizację BARCODE-ów w dokumencie w celu dalszego przetwarzania. Ta funkcja jest niezbędna podczas [odczytywania barcode'ów z dokumentów PDF](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-pdf/) lub przetwarzania dokumentów w partiach w aplikacjach Enterprise.
Spójrz na poniższy fragment kodu:
```csharp
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Output page number to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);
}
```
Powyższy fragment kodu ilustruje jeden z przypadków użycia, w którym użytkownicy potrzebują, aby program zwrócił `value` BARCODE-ów znalezionych w wielostronicowym dokumencie PDF oraz odpowiadające im numery stron. Kod wykorzystuje metodę `BarcodeReader.ReadPdf()` do odczytu BarCodes w wielostronicowym dokumencie PDF, która zwraca obiekt `BarcodeResults` przechowujący każdy `BarcodeResult` znaleziony w dokumencie. Stosujemy pętlę i iterujemy przez każdy element obiektu, aby pobrać `value` kodów BarCode oraz numer strony, na której zostały one znalezione. Oprócz tego przypadku użycia, użytkownicy mogą wykorzystać tę właściwość do debugowania, aby sprawdzić, czy wszystkie kody kreskowe w dokumencie zostały odczytane.
[[i:(Wartość zwracana przez tę właściwość jest **liczone od 1**, co oznacza, że pierwsza strona ma zawsze **numer jeden**, a **nie zero**)]]
### Jak wykryć obrót kodu kreskowego i orientację strony?
Using IronBarcode, użytkownicy mogą uzyskać informacje o orientacji kodu kreskowego oraz orientacji strony, na której został on znaleziony. Aby wyodrębnić te dwie informacje, należy uzyskać dostęp do właściwości `Rotation` i `PageOrientation` z obiektu `BarcodeResult`. `Rotation` zwraca liczbę całkowitą reprezentującą kąt obrotu znalezionego BarCode'a. Ta funkcja działa w połączeniu z możliwościami [korekcji orientacji obrazu,](https://ironsoftware.com/csharp/barcode/how-to/image-orientation-correction/) aby zapewnić dokładny odczyt BarCode niezależnie od kąta skanowania.
Spójrz na poniższy fragment kodu:
```csharp
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Output page orientation and rotation to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine(barcode.Value);
Console.WriteLine(barcode.PageOrientation);
Console.WriteLine(barcode.Rotation);
}
```
<iframe loading="lazy" src="/static-assets/barcode/how-to/output-data-formats/test.pdf#view=fit" width="100%" height="500px"></iframe>
Powyższy fragment kodu został uruchomiony z dołączonym przykładowym plikiem PDF, aby udowodnić, że użytkownicy mogą pobrać orientację strony i obrót BarCode, uzyskując odpowiednio `pageOrientation` i BarCode `rotation`. Ta funkcja jest przydatna głównie do celów debugowania.
[[i:(IronBarcode może odczytywać tylko barcode'e o obrotach `BarcodeResult.PageOrientation`, `BarcodeResult.Rotation`, `0`, `90`, `180` oraz `270` stopni. IronBarcode nie zwróci żadnej wartości, jeśli BarCode ma wartość obrotu inną niż wymienione. `PageOrientation` zwraca obiekt [`PageOrientation`](https://ironsoftware.com/csharp/barcode/object-reference/api/IronBarCode.PageOrientation.html), który składa się z `Portrait` lub `Landscape`.)]]
### Jaka jest różnica między właściwościami typu tekstowego a wartościowym?
Oczywiście główną właściwością, którą użytkownicy będą chcieli uzyskać podczas korzystania z IronBarcode, jest jego `value` i `text`. Te dwie właściwości są często używane zamiennie i zwracają ten sam `value`. Oprócz tego użytkownicy mogą skorzystać z metody `BarcodeResult.ToString()`, aby osiągnąć ten sam rezultat. Podczas pracy ze specjalistycznymi aplikacjami lub [eksportowania danych BARCODE jako strumieni](https://ironsoftware.com/csharp/barcode/how-to/export-barcode-as-stream/), te właściwości zapewniają elastyczne sposoby uzyskiwania dostępu do zawartości BARCODE w preferowanym formacie.
Poniższy fragment kodu ilustruje to:
```csharp
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");
// Output text value to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine(barcode.Value);
Console.WriteLine(barcode.Text);
Console.WriteLine(barcode.ToString());
}
```
Z powyższego fragmentu kodu wynika, że użytkownicy potrzebują zaledwie kilku wierszy kodu, aby odczytać kody kreskowe z obrazu za pomocą IronBarcode. Po iteracji przez `BarcodeResults` zwrócone przez metodę `BarcodeReader.Read()`, wyświetlamy na konsoli wynik uzyskania właściwości `Value` i `Text`, a także wywołujemy metodę `BarcodeResult.ToString()`, aby pokazać, że wszystkie one zwracają tę samą wartość `value`.
Krótko mówiąc, IronBarcode to idealny interfejs API dla użytkowników do wykonywania wielu operacji związanych z kodami kreskowymi, nie ograniczających się do ich zapisywania i dekodowania. Dzięki obsłudze różnych formatów danych wyjściowych użytkownicy mogą zrobić znacznie więcej z obiektem `BarcodeResult` zwracanym przez IronBarcode.
IronBarcode zapewnia wiele formatów wyjściowych odczytów kodów kreskowych, w tym BarcodeImage, BarcodeType, BinaryValue, współrzędne, wymiary, numery stron, orientację, tekst i właściwości wartości. Formaty te umożliwiają programowe przetwarzanie danych z BarCodes w różnych zastosowaniach.
Zamiast po prostu odczytywać BARCODE i drukować wartości w konsoli, IronBarcode oferuje znacznie więcej. Oferuje kilka formatów wyjściowych, które ułatwiają użytkownikom przetwarzanie odczytanych wyników. Formaty te obejmują takie właściwości, jak obraz BarCode, typ BarCode, BinaryValue, współrzędne, wysokość, szerokość, numer strony, BarCode, orientacja strony, text oraz value.
Użytkownicy mogą dalej modyfikować te właściwości w ramach programu. Zobaczmy, jak korzystać z tych właściwości i w jakich sytuacjach mogą się one przydać.
Szybki start: Odczyt wartości i typu BarCode w jednym wierszu
Ten przykład pokazuje, jak odczytać kod kreskowy z obrazu za pomocą IronBarcode – wystarczy jedna linijka kodu, aby załadować, a następnie natychmiast wydrukować wartość i typ kodu kreskowego. Idealne rozwiązanie do szybkiego rozpoczęcia pracy. Bardziej szczegółowe przykłady znajdziesz w przewodniku"BarCode Quickstart".
1Install IronBarcode with NuGet Package Manager
PM > Install-Package BarCode
Install-Package BarCode
2Skopiuj i uruchom ten fragment kodu.
var result = IronBarCode.BarcodeReader.Read("input.png");Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
var result = IronBarCode.BarcodeReader.Read("input.png");
Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
C#
3Wdrożenie do testowania w środowisku produkcyjnym
Przygotuj plik PDF i obraz do wykrywania kodów kreskowych
Uzyskaj dostęp do wykrytego typu BARCODE i obrazu
Pobierz kod kreskowy BARCODE x i y współrzędne, a także jego height i width
Przeczytaj BarCode text i value
Jakie są dostępne formaty wyjściowe i ich zastosowania?
BarcodeResult przechowuje różne przydatne właściwości. Właściwości te wymieniono poniżej:
BarcodeImage
BarcodeType
BinaryValue
Współrzędne, Height & Width
PageNumber
Barcode oraz PageOrientation
Text & Value
Każda właściwość służy konkretnym celom w procesach przetwarzania BarCode. Niezależnie od tego, czy tworzysz system zarządzania zapasami, proces przetwarzania dokumentów czy aplikację do kontroli jakości, te formaty danych zapewniają elastyczność niezbędną do odczytu BARCODE-ów z różnych źródeł.
Jak mogę wyodrębnić i zapisać obrazy BarCode'ów?
Po odczytaniu obrazu przez IronBarcode BarCODE-y znalezione na obrazie są zapisywane w BarcodeResult jako właściwość BarcodeImage typu AnyBitmap. Właściwość BarcodeImage przechowuje znalezione obrazy BarCode. Użytkownicy mogą pobrać ten obiekt w celu dalszego przetwarzania obrazu lub zapisania go jako stałą kopię. Zapewnia to wydajność i łatwość użytkowania poprzez wyeliminowanie dodatkowego kodu potrzebnego do wyodrębniania obrazów BARCODE-ów z obrazu.
Spójrz na poniższy fragment kodu, który pokazuje możliwy przypadek użycia tego formatu wyjściowego:
using IronBarCode;using IronSoftware.Drawing;using System.Collections.Generic;// Read barcode from PDF fileBarcodeResults result = BarcodeReader.ReadPdf("test.pdf");// Create list for barcodesList<AnyBitmap> barcodeList = new List<AnyBitmap>();foreach (BarcodeResult barcode in result){ barcodeList.Add(barcode.BarcodeImage);}// Create multi-page TIFFAnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read barcode from PDF file
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Create list for barcodes
List<AnyBitmap> barcodeList = new List<AnyBitmap>();
foreach (BarcodeResult barcode in result)
{
barcodeList.Add(barcode.BarcodeImage);
}
// Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
ImportsIronBarCodeImportsIronSoftware.DrawingImportsSystem.Collections.Generic' Read barcode from PDF filePrivate result AsBarcodeResults = BarcodeReader.ReadPdf("test.pdf")' Create list for barcodesPrivate barcodeList As New List(OfAnyBitmap)()For Each barcode AsBarcodeResultIn result barcodeList.Add(barcode.BarcodeImage)Next barcode' Create multi-page TIFFAnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif")
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic
' Read barcode from PDF file
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")
' Create list for barcodes
Private barcodeList As New List(Of AnyBitmap)()
For Each barcode As BarcodeResult In result
barcodeList.Add(barcode.BarcodeImage)
Next barcode
' Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif")
Powyższy fragment kodu ilustruje jeden z przykładów zastosowania tego formatu wyjściowego. W szczególności tworzy wielostronicowy obraz TIFF na podstawie kodów kreskowych wykrytych w dokumencie PDF. Najpierw skanujemy lub wykrywamy kody kreskowe w przykładowym pliku PDF. Następnie tworzymy listę AnyBitmap, w której przechowujemy informacje z właściwości BarcodeImage. Na koniec wykorzystujemy tę listę do wygenerowania wielostronicowego pliku TIFF przy użyciu metody CreateMultiFrameTiff. Technika ta jest szczególnie przydatna podczas przetwarzania wielostronicowych plików GIF i TIFF.
BarcodeImage właściwość z BarcodeResult przechowuje tylko obrazy BARCODE-ów znalezionych podczas odczytu, a nie cały obraz wejściowy.
Jak programowo rozpoznać różne typy BarCodes?
Ta właściwość pomaga określić, jaki typ BARCODE występuje na obrazku lub w dokumencie wejściowym. Ograniczeniem jest jednak to, że typ BARCODE na obrazie musi być obsługiwany i czytelny dla IronBarcode. Aby dowiedzieć się więcej o typach kodów kreskowych obsługiwanych przez IronBarcode, zapoznaj się z tym artykułem. Dodatkowo zapoznaj się z pełną listą obsługiwanych formatów BARCODE, aby upewnić się, że spełniają one Twoje konkretne wymagania.
Poniższy fragment kodu pokazuje, jak pobrać wartości kodów kreskowych i typ kodu kreskowego z obrazu, drukując te wartości w konsoli.
using IronBarCode;using System;// Read barcode from PNGBarcodeResults result = BarcodeReader.Read("bc3.png");// Output barcode type to consoleforeach (BarcodeResult barcode in result){Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);}
using IronBarCode;
using System;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("bc3.png");
// Output barcode type to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);
}
ImportsIronBarCodeImportsSystem' Read barcode from PNGPrivate result AsBarcodeResults = BarcodeReader.Read("bc3.png")' Output barcode type to consoleFor Each barcode AsBarcodeResultIn resultConsole.WriteLine("The barcode value is " & barcode.ToString() & " and the barcode type is " & barcode.BarcodeType)Next barcode
Imports IronBarCode
Imports System
' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("bc3.png")
' Output barcode type to console
For Each barcode As BarcodeResult In result
Console.WriteLine("The barcode value is " & barcode.ToString() & " and the barcode type is " & barcode.BarcodeType)
Next barcode
W powyższym fragmencie kodu odczytujemy BARCODE, wywołując metodę BarcodeReader.Read() na obrazku wejściowym. Zwraca to obiekt BarcodeResults, który przechowuje wszystkie BarcodeResult uzyskane po odczytaniu wszystkich BARCODE'ów dostępnych na obrazie. Następnie iterujemy przez obiekt BarcodeResults, aby pobrać BarcodeResult i wyświetlić BARCODE value oraz type na konsoli. To podejście działa bezproblemowo z różnymi typami kodów kreskowych, w tym z formatami specjalistycznymi, takimi jak kody kreskowe Code 39.
Kiedy należy używać wyjścia wartości binarnej?
Using IronBarcode, użytkownicy mogą pobrać tablicę bajtów kodu kreskowego value, uzyskując dostęp do właściwości BinaryValue z obiektu BarcodeResult. Pozwala to użytkownikom na dalszą obróbkę BarCoda value w programie. Wynik w formacie binarnym value jest szczególnie przydatny podczas pracy z danymi zaszyfrowanymi, załącznikami zakodowanymi w BARCODE-ach lub podczas integracji z systemami wymagającymi przetwarzania danych na poziomie bajtów.
Poniższy fragment kodu ilustruje jeden z przykładów pobierania BARCODE-a value jako danych binarnych:
using IronBarCode;// Read barcode from PNGBarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");int i = 1;foreach (BarcodeResult barcode in result){ var binaryValue = barcode.BinaryValue; var barcodeType = IronBarCode.BarcodeEncoding.QRCode; // Create QR code GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType); // Export QR code generatedBarcode.SaveAsPng($"qrFromBinary{i}.png"); i++;}
using IronBarCode;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");
int i = 1;
foreach (BarcodeResult barcode in result)
{
var binaryValue = barcode.BinaryValue;
var barcodeType = IronBarCode.BarcodeEncoding.QRCode;
// Create QR code
GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType);
// Export QR code
generatedBarcode.SaveAsPng($"qrFromBinary{i}.png");
i++;
}
ImportsIronBarCode' Read barcode from PNGPrivate result AsBarcodeResults = BarcodeReader.Read("multiple-barcodes.png")Private i AsInteger = 1For Each barcode AsBarcodeResultIn result Dim binaryValue = barcode.BinaryValue Dim barcodeType = IronBarCode.BarcodeEncoding.QRCode ' Create QR code Dim generatedBarcode AsGeneratedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType) ' Export QR code generatedBarcode.SaveAsPng($"qrFromBinary{i}.png") i += 1Next barcode
Imports IronBarCode
' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")
Private i As Integer = 1
For Each barcode As BarcodeResult In result
Dim binaryValue = barcode.BinaryValue
Dim barcodeType = IronBarCode.BarcodeEncoding.QRCode
' Create QR code
Dim generatedBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType)
' Export QR code
generatedBarcode.SaveAsPng($"qrFromBinary{i}.png")
i += 1
Next barcode
Analizując powyższy fragment kodu, stworzyliśmy prosty program, który przekształca wiele BarCodes w obrazie w oddzielne, nowe pliki zakodowane binarnie. Na początku skanujemy barcody na przykładowym obrazku PNG. Po wykryciu tych kodów kreskowych przeglądamy je, uzyskujemy dostęp do właściwości BinaryValue i wykorzystujemy ją do tworzenia nowych plików binarnych. Technika ta jest szczególnie przydatna, gdy trzeba odczytać wiele BARCODE'ów i przetworzyć ich dane binarne indywidualnie.
Jak uzyskać dostęp do lokalizacji i wymiarów BarCode?
Kolejną właściwością obiektu BarcodeResult, do której użytkownicy mają dostęp, są współrzędne BARCODE, w tym X1, Y1 i X2, Y2, a także jego Height i Width w pliku graficznym lub dokumencie. Te właściwości są przydatne, gdy użytkownicy muszą uzyskać informacje o położeniu i wymiarach BarCode'a. Te informacje przestrzenne mają kluczowe znaczenie dla aplikacji wymagających precyzyjnego pozycjonowania, takich jak automatyczne przetwarzanie dokumentów, systemy kontroli jakości lub podczas wdrażania obszarów wycinania w celu zoptymalizowanego skanowania BARCODE.
Zobaczmy, gdzie znajduje się BARCODE i jakie są jego wymiary.
using IronBarCode;using IronSoftware.Drawing;using System.Linq;// Read barcode from PNGBarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");foreach (BarcodeResult barcode in result){ PointF[] barcodePoints = barcode.Points; float x1 = barcodePoints.Select(b => b.X).Min(); float y1 = barcodePoints.Select(b => b.Y).Min(); Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!); bitmap = bitmap.Redact(rectangle, Color.Magenta); // Save the image bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);}
using IronBarCode;
using IronSoftware.Drawing;
using System.Linq;
// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");
AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");
foreach (BarcodeResult barcode in result)
{
PointF[] barcodePoints = barcode.Points;
float x1 = barcodePoints.Select(b => b.X).Min();
float y1 = barcodePoints.Select(b => b.Y).Min();
Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
bitmap = bitmap.Redact(rectangle, Color.Magenta);
// Save the image
bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);
}
ImportsSystemImportsIronBarCodeImportsIronSoftware.DrawingImportsSystem.Linq' Read barcode from PNGPrivate result AsBarcodeResults = BarcodeReader.Read("multiple-barcodes.png")Private bitmap AsAnyBitmap = AnyBitmap.FromFile("multiple-barcodes.png")For Each barcode AsBarcodeResultIn result Dim barcodePoints() AsPointF = barcode.Points Dim x1 AsSingle = barcodePoints.Select(Function(b) b.X).Min() Dim y1 AsSingle = barcodePoints.Select(Function(b) b.Y).Min()'INSTANT VB TODO TASK: There is no VB equivalent to the C# 'null-forgiving operator':'ORIGINAL LINE: Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!); Dim rectangle As New Rectangle(CInt(Math.Truncate(x1)), CInt(Math.Truncate(y1)), CInt(barcode.Width), CInt(barcode.Height)) bitmap = bitmap.Redact(rectangle, Color.Magenta) ' Save the image bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png)Next barcode
Imports System
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Linq
' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")
Private bitmap As AnyBitmap = AnyBitmap.FromFile("multiple-barcodes.png")
For Each barcode As BarcodeResult In result
Dim barcodePoints() As PointF = barcode.Points
Dim x1 As Single = barcodePoints.Select(Function(b) b.X).Min()
Dim y1 As Single = barcodePoints.Select(Function(b) b.Y).Min()
'INSTANT VB TODO TASK: There is no VB equivalent to the C# 'null-forgiving operator':
'ORIGINAL LINE: Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
Dim rectangle As New Rectangle(CInt(Math.Truncate(x1)), CInt(Math.Truncate(y1)), CInt(barcode.Width), CInt(barcode.Height))
bitmap = bitmap.Redact(rectangle, Color.Magenta)
' Save the image
bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png)
Next barcode
Przed redakcją
Po redakcji
Powyższy fragment kodu odczytuje wiele kodów kreskowych znajdujących się w pliku graficznym. Aby to osiągnąć, używamy kombinacji dwóch bibliotek: IronBarcode i IronDrawing. Aby uzyskać obiekt BarcodeResult i wyodrębnić z niego właściwości, najpierw odczytujemy BarCODES dostępne w pliku obrazu za pomocą metody BarcodeReader.Read(). Jednocześnie plik obrazu wejściowego musi zostać przekonwertowany na obiekt AnyBitmap, aby można było zastosować metodę redagowania do obrazu. Gdy już mamy obiekt BarcodeResults, możemy zastosować pętlę i iterować przez niego, aby uzyskać X1, Y1, Width oraz Height każdego BARCODE'a dostępnego na obrazie i wykorzystać je we właściwościach CropRectangle metody AnyBitmap.Redact().
Dlaczego numer strony jest ważny w przypadku dokumentów wielostronicowych?
Użytkownicy mogą uzyskać numer strony, na której znaleziono BarCode. Jest to przydatna funkcja dla użytkowników korzystających z wielostronicowych dokumentów zawierających wiele BARCODE-ów, którzy muszą znać lokalizację BARCODE-ów w dokumencie w celu dalszego przetwarzania. Ta funkcja jest niezbędna podczas odczytywania barcode'ów z dokumentów PDF lub przetwarzania dokumentów w partiach w aplikacjach Enterprise.
Spójrz na poniższy fragment kodu:
using IronBarCode;using System;// Read barcode from PDFBarcodeResults result = BarcodeReader.ReadPdf("test.pdf");// Output page number to consoleforeach (BarcodeResult barcode in result){Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);}
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Output page number to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);
}
ImportsIronBarCodeImportsSystem' Read barcode from PDFPrivate result AsBarcodeResults = BarcodeReader.ReadPdf("test.pdf")' Output page number to consoleFor Each barcode AsBarcodeResultIn resultConsole.WriteLine("The barcode value " & barcode.ToString() & " is found on page number " & barcode.PageNumber)Next barcode
Imports IronBarCode
Imports System
' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")
' Output page number to console
For Each barcode As BarcodeResult In result
Console.WriteLine("The barcode value " & barcode.ToString() & " is found on page number " & barcode.PageNumber)
Next barcode
Powyższy fragment kodu ilustruje jeden z przypadków użycia, w którym użytkownicy potrzebują, aby program zwrócił value BARCODE-ów znalezionych w wielostronicowym dokumencie PDF oraz odpowiadające im numery stron. Kod wykorzystuje metodę BarcodeReader.ReadPdf() do odczytu BarCodes w wielostronicowym dokumencie PDF, która zwraca obiekt BarcodeResults przechowujący każdy BarcodeResult znaleziony w dokumencie. Stosujemy pętlę i iterujemy przez każdy element obiektu, aby pobrać value kodów BarCode oraz numer strony, na której zostały one znalezione. Oprócz tego przypadku użycia, użytkownicy mogą wykorzystać tę właściwość do debugowania, aby sprawdzić, czy wszystkie kody kreskowe w dokumencie zostały odczytane.
Zwróć uwagę: Wartość zwracana przez tę właściwość jest liczone od 1, co oznacza, że pierwsza strona ma zawsze numer jeden, a nie zero
Jak wykryć obrót kodu kreskowego i orientację strony?
Using IronBarcode, użytkownicy mogą uzyskać informacje o orientacji kodu kreskowego oraz orientacji strony, na której został on znaleziony. Aby wyodrębnić te dwie informacje, należy uzyskać dostęp do właściwości Rotation i PageOrientation z obiektu BarcodeResult. Rotation zwraca liczbę całkowitą reprezentującą kąt obrotu znalezionego BarCode'a. Ta funkcja działa w połączeniu z możliwościami korekcji orientacji obrazu, aby zapewnić dokładny odczyt BarCode niezależnie od kąta skanowania.
Spójrz na poniższy fragment kodu:
using IronBarCode;using System;// Read barcode from PDFBarcodeResults result = BarcodeReader.ReadPdf("test.pdf");// Output page orientation and rotation to consoleforeach (BarcodeResult barcode in result){Console.WriteLine(barcode.Value);Console.WriteLine(barcode.PageOrientation);Console.WriteLine(barcode.Rotation);}
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");
// Output page orientation and rotation to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine(barcode.Value);
Console.WriteLine(barcode.PageOrientation);
Console.WriteLine(barcode.Rotation);
}
ImportsIronBarCodeImportsSystem' Read barcode from PDFPrivate result AsBarcodeResults = BarcodeReader.ReadPdf("test.pdf")' Output page orientation and rotation to consoleFor Each barcode AsBarcodeResultIn resultConsole.WriteLine(barcode.Value)Console.WriteLine(barcode.PageOrientation)Console.WriteLine(barcode.Rotation)Next barcode
Imports IronBarCode
Imports System
' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")
' Output page orientation and rotation to console
For Each barcode As BarcodeResult In result
Console.WriteLine(barcode.Value)
Console.WriteLine(barcode.PageOrientation)
Console.WriteLine(barcode.Rotation)
Next barcode
Powyższy fragment kodu został uruchomiony z dołączonym przykładowym plikiem PDF, aby udowodnić, że użytkownicy mogą pobrać orientację strony i obrót BarCode, uzyskując odpowiednio pageOrientation i BarCode rotation. Ta funkcja jest przydatna głównie do celów debugowania.
Zwróć uwagę: IronBarcode może odczytywać tylko barcode'e o obrotach BarcodeResult.PageOrientation, BarcodeResult.Rotation, 0, 90, 180 oraz 270 stopni. IronBarcode nie zwróci żadnej wartości, jeśli BarCode ma wartość obrotu inną niż wymienione. PageOrientation zwraca obiekt PageOrientation, który składa się z Portrait lub Landscape.
Jaka jest różnica między właściwościami typu tekstowego a wartościowym?
Oczywiście główną właściwością, którą użytkownicy będą chcieli uzyskać podczas korzystania z IronBarcode, jest jego value i text. Te dwie właściwości są często używane zamiennie i zwracają ten sam value. Oprócz tego użytkownicy mogą skorzystać z metody BarcodeResult.ToString(), aby osiągnąć ten sam rezultat. Podczas pracy ze specjalistycznymi aplikacjami lub eksportowania danych BARCODE jako strumieni, te właściwości zapewniają elastyczne sposoby uzyskiwania dostępu do zawartości BARCODE w preferowanym formacie.
Poniższy fragment kodu ilustruje to:
using IronBarCode;using System;// Read barcode from PDFBarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");// Output text value to consoleforeach (BarcodeResult barcode in result){Console.WriteLine(barcode.Value);Console.WriteLine(barcode.Text);Console.WriteLine(barcode.ToString());}
using IronBarCode;
using System;
// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");
// Output text value to console
foreach (BarcodeResult barcode in result)
{
Console.WriteLine(barcode.Value);
Console.WriteLine(barcode.Text);
Console.WriteLine(barcode.ToString());
}
ImportsIronBarCodeImportsSystem' Read barcode from PDFPrivate result AsBarcodeResults = BarcodeReader.ReadPdf("barcodestamped3.pdf")' Output text value to consoleFor Each barcode AsBarcodeResultIn resultConsole.WriteLine(barcode.Value)Console.WriteLine(barcode.Text)Console.WriteLine(barcode.ToString())Next barcode
Imports IronBarCode
Imports System
' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("barcodestamped3.pdf")
' Output text value to console
For Each barcode As BarcodeResult In result
Console.WriteLine(barcode.Value)
Console.WriteLine(barcode.Text)
Console.WriteLine(barcode.ToString())
Next barcode
Z powyższego fragmentu kodu wynika, że użytkownicy potrzebują zaledwie kilku wierszy kodu, aby odczytać kody kreskowe z obrazu za pomocą IronBarcode. Po iteracji przez BarcodeResults zwrócone przez metodę BarcodeReader.Read(), wyświetlamy na konsoli wynik uzyskania właściwości Value i Text, a także wywołujemy metodę BarcodeResult.ToString(), aby pokazać, że wszystkie one zwracają tę samą wartość value.
Krótko mówiąc, IronBarcode to idealny interfejs API dla użytkowników do wykonywania wielu operacji związanych z kodami kreskowymi, nie ograniczających się do ich zapisywania i dekodowania. Dzięki obsłudze różnych formatów danych wyjściowych użytkownicy mogą zrobić znacznie więcej z obiektem BarcodeResult zwracanym przez IronBarcode.
Często Zadawane Pytania
Jakie formaty wyjściowe obsługuje odczyt kodów kreskowych C#?
IronBarcode oferuje wiele formatów wyjściowych, w tym BarcodeImage, BarcodeType, BinaryValue, współrzędne, wymiary, numery stron, orientację, właściwości tekstu i wartości. Te formaty umożliwiają kompleksowe przetwarzanie danych kodów kreskowych dla różnych aplikacji .NET.
Jak mogę odczytać wartość kodu kreskowego w jednej linii kodu?
Z IronBarcode możesz odczytać kod kreskowy w jednej linii za pomocą: var result = IronBarCode.BarcodeReader.Read('input.png'); To od razu daje ci dostęp do wartości i rodzaju kodu kreskowego przez result[0].Value i result[0].BarcodeType.
Jakie właściwości są dostępne w BarcodeResult?
Obiekt BarcodeResult w IronBarcode zawiera właściwości, w tym BarcodeImage, BarcodeType, BinaryValue, współrzędne, wysokość i szerokość, numer strony, kod kreskowy, orientację strony, tekst i wartość - dostarczając kompleksowych danych do przetwarzania kodów kreskowych.
Czy mogę wyodrębniać i zapisywać obrazy kodów kreskowych po ich odczytaniu?
Tak, IronBarcode przechowuje znalezione kody kreskowe jako obiekty AnyBitmap w właściwości BarcodeImage. Możesz pobrać ten obiekt, aby dalej przetwarzać obraz lub zapisać go jako kopię trwałą, eliminując potrzebę dodatkowego kodu do wyodrębnienia obrazów kodów kreskowych.
Jak uzyskać dostęp do współrzędnych i wymiarów kodu kreskowego?
IronBarcode dostarcza dane współrzędne, w tym pozycje x i y oraz wymiary wysokości i szerokości dla każdego wykrytego kodu kreskowego. Te właściwości są dostępne poprzez obiekt BarcodeResult dla precyzyjnego śledzenia lokalizacji kodu kreskowego.
Jaka jest różnica między właściwościami Text a Value?
W IronBarcode zarówno właściwości Text, jak i Value zawierają treść danych kodu kreskowego. Te właściwości są częścią obiektu BarcodeResult i mogą być używane zamiennie do uzyskiwania informacji dekodowanego kodu kreskowego.
Czy mogę określić, na której stronie znalazł się kod kreskowy?
Tak, IronBarcode zawiera właściwość PageNumber w obiekcie BarcodeResult, umożliwiającą ustalenie, na której stronie dokumentu wielostronicowego lub PDF znajdował się każdy wykryty kod kreskowy.
Jak mogę zidentyfikować typ wykrytego kodu kreskowego?
Właściwość BarcodeType w obiekcie BarcodeResult IronBarcode identyfikuje konkretny wykryty format kodu kreskowego (np. QR Code, Code 128 itd.), umożliwiając przetwarzanie specyficzne dla formatu w twojej aplikacji.
What kind of applications benefit from using IronBarcode's output data formats?
Applications in inventory management, document processing, and quality control greatly benefit from IronBarcode's diverse data formats as they offer extensive barcode data processing options.
Can IronBarcode read barcodes from multipage PDF documents?
Yes, IronBarcode can read barcodes from multipage PDF documents using methods like `BarcodeReader.ReadPdf()`, which also informs about the page number on which each barcode is found.