Jak wygenerować formaty danych BarCode w języku C#

Jak wyprowadzać formaty danych w C# z IronBarcode

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode oferuje wiele formatów wyjściowych odczytów kodów kreskowych, w tym BarcodeImage, BarcodeType, BinaryValue, współrzędne, wymiary, numery stron, orientację, tekst i atrybuty wartości. Te formaty umożliwiają programatyczne przetwarzanie danych kodów kreskowych dla różnych zastosowań.

Zamiast tylko odczytywać kod kreskowy i drukować wartości na konsoli, IronBarcode oferuje znacznie więcej. Dostarcza kilka formatów wyjściowych, które otwierają drogę użytkownikom do przetwarzania wyników odczytu. Te formaty obejmują właściwości takie jak obraz kodu kreskowego, typ kodu kreskowego, BinaryValue, współrzędne, wysokość, szerokość, numer strony, kod kreskowy, orientacja strony, tekst i wartość.

Użytkownicy mogą dalej manipulować tymi właściwościami w programie. Przyjrzyjmy się, jak korzystać z tych właściwości i jakie są przypadki użycia, w których mogą być przydatne.

Szybki start: Odczytaj wartość i typ kodu kreskowego w jednej linii

Ten przykład pokazuje, jak odczytać kod kreskowy z obrazu przy użyciu IronBarcode – jedna linia do załadowania, a następnie natychmiastowe wydrukowanie wartości i typu kodu kreskowego. Idealny do szybkiego rozpoczęcia. Aby uzyskać bardziej złożone przykłady, sprawdź Przewodnik szybkiego startu dla kodów kreskowych.

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode
  2. Skopiuj i uruchom ten fragment kodu.

    var result = IronBarCode.BarcodeReader.Read("input.png");
    Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronBarcode w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jakie są dostępne formaty wyjściowe i ich przypadki użycia?

BarcodeResult przechowuje różne przydatne właściwości. Właściwości te wymienione są poniżej:

  • BarcodeImage
  • BarcodeType
  • BinaryValue
  • Współrzędne, wysokość i szerokość
  • PageNumber
  • Barcode i PageOrientation
  • Tekst i wartość

Każda właściwość służy określonym celom w ramach przepływów pracy dotyczących przetwarzania kodów kreskowych. 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ść potrzebną do odczytu BARCODE-ów z różnych źródeł.

Jak mogę wyodrębnić i zapisać obrazy BarCode'ów?

Po odczytaniu obrazu przez IronBarcode, znalezione kody kreskowe w obrazie są przechowywane w BarcodeResult jako właściwość BarcodeImage typu AnyBitmap. Właściwość BarcodeImage przechowuje znalezione obrazy kodów kreskowych. Użytkownicy mogą pobrać ten obiekt, aby dalej przetwarzać obraz lub zapisać 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 ilustruje możliwy przypadek użycia tego formatu wyjściowego:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeImage.cs
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");
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")
$vbLabelText   $csharpLabel

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 BarCodes wykrytych w dokumencie PDF. Najpierw skanujemy lub wykrywamy BARCODES w przykładowym pliku PDF. Następnie tworzymy listę AnyBitmap, gdzie przechowujemy informacje z właściwości BarcodeImage. Na końcu, używamy tej listy do wygenerowania wielostronicowego 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 kodów kreskowych 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 wewnątrz obrazu musi być obsługiwany i czytelny przez 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 zapewnić zgodność z Twoimi konkretnymi wymaganiami.

Poniższy fragment kodu pokazuje, jak pobrać wartości BARCODE i typ BARCODE z obrazu, wyświetlając te wartości w konsoli.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeType.cs
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);
}
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
$vbLabelText   $csharpLabel

Z powyższego fragmentu kodu, wykonujemy odczyt kodów kreskowych, wywołując metodę BarcodeReader.Read() na obrazie wejściowym. To zwraca obiekt BarcodeResults, który przechowuje wszystkie BarcodeResult z odczytu wszystkich dostępnych kodów kreskowych w obrazie. Następnie iterujemy przez obiekt BarcodeResults, aby pobrać BarcodeResult i uzyskać wartość i typ kodu kreskowego wydrukowane na konsoli. To podejście działa bez zarzutu z różnymi typami BARCODE-ów, w tym z formatami specjalistycznymi, takimi jak BARCODE-y Code 39.

Kiedy należy używać wyjścia wartości binarnej?

Używając IronBarcode, użytkownicy mogą pobrać tablicę bajtów wartości kodu kreskowego, uzyskując dostęp do właściwości BinaryValue z obiektu BarcodeResult. Pozwala to użytkownikom na dalszą manipulację wartością kodu kreskowego w programie. Wyjście wartości binarnych jest szczególnie przydatne podczas pracy z danymi zaszyfrowanymi, załącznikami zakodowanymi w BARCODES lub podczas integracji z systemami wymagającymi przetwarzania danych na poziomie bajtów.

Poniższy fragment kodu ilustruje jeden z przykładów pobierania wartości BARCODE jako danych binarnych:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BinaryValue.cs
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++;
}
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
$vbLabelText   $csharpLabel

Korzystając z powyższego fragmentu kodu, stworzyliśmy prosty program, który przekształca wiele BarCodes w obrazie w oddzielne, nowe pliki zakodowane binarnie. Na początku skanujemy barcodes na przykładowym obrazku PNG. Gdy już wykryjemy te kody kreskowe, przeprowadzamy przez nie iterację, uzyskujemy właściwość BinaryValue i używamy jej 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?

Inna właściwość obiektu BarcodeResult, do której użytkownicy mogą uzyskać dostęp, to współrzędne kodu kreskowego, w tym X1, Y1 i X2, Y2, a także jego Height i Width w pliku obrazu 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 przycięcia w celu zoptymalizowanego skanowania BarCode.

Zademonstrujmy położenie i wymiary BarCoda.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-height-width.cs
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);
}
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
$vbLabelText   $csharpLabel
Three barcode samples (A, B, C) showing different encoded data with similar visual patterns
Three redacted content blocks with illegible text fragments

Powyższy fragment kodu usuwa wiele kodów kreskowych znalezionych 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 dostępne kody kreskowe z pliku obrazowego, używając metody BarcodeReader.Read(). Równocześnie plik obrazowy wejściowy musi zostać przekonwertowany na obiekt AnyBitmap, aby zastosować metodę redakcji do obrazu. Gdy już mamy obiekt BarcodeResults, możemy zastosować pętlę i iterować przez niego, aby uzyskać X1, Y1, Width i Height każdego dostępnego kodu kreskowego w obrazie i użyć ich w właściwościach CropRectangle metody AnyBitmap.Redact().

Dlaczego numer strony jest ważny w dokumentach 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 wsadowych w aplikacjach Enterprise.

Spójrz na poniższy fragment kodu:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-page-number.cs
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);
}
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
$vbLabelText   $csharpLabel

Powyższy fragment kodu ilustruje jeden z przypadków użycia, w którym użytkownicy potrzebują, aby program zwrócił wartości BarCodes znalezionych w wielostronicowym dokumencie PDF oraz odpowiadające im numery stron. Kod używa metody BarcodeReader.ReadPdf() do odczytu kodów kreskowych wewnątrz wielostronicowego dokumentu 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ć wartość BarCodes 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 liczona od 1, co oznacza, że pierwsza strona ma zawsze numer jeden, a nie zero

Jak wykryć obrót BarCode i orientację strony?

Korzystając z IronBarcode, użytkownicy mogą uzyskać informacje o orientacji BarCode oraz orientacji strony, na której został on znaleziony. Aby wyodrębnić te dwa elementy informacji, uzyskujemy dostęp do właściwości Rotation i PageOrientation z obiektu BarcodeResult. Rotation zwraca liczbę całkowitą, która reprezentuje kąt obrotu znalezionego kodu kreskowego. 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:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-orientation.cs
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);
}
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
$vbLabelText   $csharpLabel

Powyższy fragment kodu został uruchomiony z dołączonym przykładowym wejściowym PDF, aby udowodnić, że użytkownicy mogą uzyskać orientację strony i obrót kodu kreskowego, uzyskując wartość BarcodeResult.PageOrientation i BarcodeResult.Rotation, odpowiednio. Ta funkcja jest przydatna głównie do celów debugowania.

Zwróć uwagęIronBarcode może odczytywać kody kreskowe tylko z obrotami o 0, 90, 180, i 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 Text a Value?

Oczywiście główną właściwością, którą użytkownicy będą chcieli pobrać podczas korzystania z IronBarcode, jest jego wartość i tekst. Te dwie właściwości są często używane zamiennie i zwracają tę samą wartość. Poza tym, użytkownicy mogą użyć 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:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-text-value.cs
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());
}
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
$vbLabelText   $csharpLabel

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(), wypisujemy na konsolę wynik uzyskania właściwości Value i Text, a także wywołania metody BarcodeResult.ToString(), aby pokazać, że wszystkie one zwracają tę samą wartość.

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 różnym obsługiwanym formatom wyjściowym danych, użytkownicy mogą zrobić znacznie więcej z obiektem BarcodeResult zwróconym 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.

Hairil Hasyimi Bin Omar
Inżynier oprogramowania
Jak wszyscy wielcy inżynierowie, Hairil jest zapalonym uczniem. Doskonali swoją wiedzę na temat C#, Pythona i Javy, wykorzystując tę wiedzę, aby dodawać wartości członkom zespołu Iron Software. Hairil dołączył do zespołu Iron Software z Universiti Teknologi MARA w Malezji, gdzie uzyskał tytuł licencjata ...
Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,145,441 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package BarCode
uruchom przykład zobacz, jak twoje ciągi zamieniają się w kody kreskowe.