Jak tworzyć BarCodes jako strumienie w języku C# przy użyciu IronBarcode

Jak eksportować kody kreskowe jako strumienie w C

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

IronBarcode pozwala generować kody kreskowe i konwertować je bezpośrednio do obiektów MemoryStream bez użycia systemu plików, co poprawia wydajność i bezpieczeństwo. To usprawnione podejście eliminuje operacje na dysku i umożliwia płynną integrację z aplikacjami. Niezależnie czy tworzysz webowe API, przetwarzasz operacje wsadowe, czy integrujesz się z usługami w chmurze, generowanie kodów kreskowych oparte na strumieniach zapewnia elastyczność i wydajność, jakiej wymagają nowoczesne aplikacje.

Szybki start: Eksportowanie kodu kreskowego do strumienia natychmiast

Użyj IronBarcode, aby wygenerować kod kreskowy i przekonwertować go bezpośrednio do MemoryStream za pomocą jednej linii kodu. Nie jest wymagany system plików.

  1. Install IronBarcode with NuGet Package Manager

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

    var stream = BarcodeWriter.CreateBarcode("Quick123", BarcodeEncoding.Code128).ToStream();
  3. Wdrożenie do testowania w środowisku produkcyjnym

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

    arrow pointer


Jak eksportować kody kreskowe jako strumienie?

Po utworzeniu kodu kreskowego z pożądaną wartością, użyj metody ToStream, aby przekonwertować wygenerowany kod kreskowy na MemoryStream. Domyślny format to PNG. Ta funkcjonalność działa również z QRCodeWriter, nawet po zastosowaniu niestandardowego stylu. Dla pełnej dokumentacji na temat wszystkich dostępnych metod, odwiedź Dokumentacja API.

Przykład eksportowania kodu kreskowego jako strumień

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-as-stream-to-stream.cs
using IronBarCode;
using System.IO;

// Create one-dimensional barcode
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128);

// Convert barcode to stream
Stream barcodeStream = barcode.ToStream();

// Create QR code
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode("IronBarcode1234");

// Convert QR code to stream
Stream qrCodeStream = qrCode.ToStream();
Imports IronBarCode
Imports System.IO

' Create one-dimensional barcode
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128)

' Convert barcode to stream
Dim barcodeStream As Stream = barcode.ToStream()

' Create QR code
Dim qrCode As GeneratedBarcode = QRCodeWriter.CreateQrCode("IronBarcode1234")

' Convert QR code to stream
Dim qrCodeStream As Stream = qrCode.ToStream()
$vbLabelText   $csharpLabel

Dlaczego używać strumieni zamiast plików?

Użycie strumieni eliminuje zależności od systemu plików i zapewnia przetwarzanie w pamięci dla lepszej wydajności. Podejście to jest idealne dla aplikacji webowych, API oraz scenariuszy, gdzie tworzenie tymczasowych plików jest ograniczone lub niepożądane. Przetwarzanie strumieniowe oferuje kilka zalet:

  • Zwiększone bezpieczeństwo: brak plików tymczasowych na dysku, które mogłyby ujawnić poufne dane
  • Lepsza wydajność: Operacje na pamięci bezpośredniej są szybsze niż operacje wejścia/wyjścia na dysku
  • Kompatybilność z chmurą: Działa płynnie w środowiskach kontenerowych i bezserwerowych
  • Efektywne wykorzystanie zasobów: zmniejsza zużycie miejsca na dysku i obciążenie systemu plików

Kiedy należy używać MemoryStream do BarCodes?

Użyj MemoryStream, gdy potrzebujesz przetworzyć kody kreskowe w pamięci, wysłać je bezpośrednio do odpowiedzi HTTP lub zintegrować je z innymi API opartymi o strumienie bez tworzenia tymczasowych plików. Typowe scenariusze obejmują:

  • Odpowiedzi Web API: Zwracają BarCodes bezpośrednio w odpowiedziach HTTP bez zapisywania na dysku
  • Przechowywanie w bazie danych: Przechowuj dane BarCode jako binarne bloby w bazach danych
  • Załączniki do wiadomości e-mail: Generuj i dołączaj BarCodes do wiadomości e-mail w locie
  • Przechowywanie w chmurze: Przesyłaj bezpośrednio do Azure Blob Storage, AWS S3 lub podobnych usług
  • Przetwarzanie w czasie rzeczywistym: Generowanie kodów kreskowych do natychmiastowego wykorzystania bez konieczności ich przechowywania

Jakie formaty obrazów mogę eksportować do Streams?

IronBarcode obsługuje wiele formatów danych wyjściowych do eksportu strumieniowego. Kilka metod konwertuje obiekt kodu kreskowego do MemoryStream. Metody te upraszczają proces, umożliwiając wybór w oparciu o pożądany format obrazu. Dostępne metody obejmują:

Metoda Format Opis
Właściwość BinaryStream Bitmapa Zwraca System.IO.Stream kodu kreskowego wyrenderowanego jako obraz Bitmap
ToGifStream() GIF W przypadku formatu obrazuGIF
ToJpegStream() JPEG/JPG W przypadku formatu obrazuJPEG/JPG
ToPdfStream() PDF Dla formatu dokumentuPDF
ToPngStream() PNG Dla formatu obrazuPNG
ToStream() PNG(domyślnie) Domyślnie dla formatu obrazu PNG. Akceptuje pole wyliczeniowe AnyBitmap.ImageFormat jako argument w celu określenia pożądanego formatu
ToTiffStream() TIFF W przypadku formatu obrazuTIFF

Eksportuj BarCode jako strumień w różnych formatach obrazu

Użyj metod ToJpegStream i ToStream, aby wyprowadzić strumienie w formacie obrazu JPEG:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-as-stream-to-jpeg-stream.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.IO;

// Create one-dimensional barcode
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128);

// Convert barcode to JPEG stream
Stream barcodeStream = barcode.ToStream(AnyBitmap.ImageFormat.Jpeg);

// Create QR code
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode("IronBarcode1234");

// Convert QR code to JPEG stream
Stream qrCodeStream = qrCode.ToJpegStream();
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.IO

' Create one-dimensional barcode
Private barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128)

' Convert barcode to JPEG stream
Private barcodeStream As Stream = barcode.ToStream(AnyBitmap.ImageFormat.Jpeg)

' Create QR code
Private qrCode As GeneratedBarcode = QRCodeWriter.CreateQrCode("IronBarcode1234")

' Convert QR code to JPEG stream
Private qrCodeStream As Stream = qrCode.ToJpegStream()
$vbLabelText   $csharpLabel

Przykłady zaawansowanego eksportu strumieniowego

Ten obszerny przykład pokazuje, jak tworzyć BarCodes na podstawie różnych typów danych i eksportować je jako strumienie w różnych formatach:

using IronBarCode;
using IronSoftware.Drawing;
using System.IO;
using System.Drawing.Imaging;

public class BarcodeStreamExporter
{
    public static void ExportMultipleFormats()
    {
        // Generate barcode with custom data
        var myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128);

        // Apply styling
        myBarcode.ResizeTo(300, 150);
        myBarcode.SetMargins(10);
        myBarcode.AddAnnotationTextAboveBarcode("Product ID");

        // Export to different stream formats
        Stream pngStream = myBarcode.ToPngStream();
        Stream jpegStream = myBarcode.ToJpegStream();
        Stream pdfStream = myBarcode.ToPdfStream();
        Stream tiffStream = myBarcode.ToTiffStream();

        // Use with HTTP response (ASP.NET Core example)
        // return File(pngStream, "image/png", "barcode.png");
    }

    public static byte[] GenerateQRCodeBytes(string data)
    {
        // Create QR code with error correction
        var qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500);

        // Convert to byte array via stream
        using (var stream = qrCode.ToStream())
        {
            using (var memoryStream = new MemoryStream())
            {
                stream.CopyTo(memoryStream);
                return memoryStream.ToArray();
            }
        }
    }
}
using IronBarCode;
using IronSoftware.Drawing;
using System.IO;
using System.Drawing.Imaging;

public class BarcodeStreamExporter
{
    public static void ExportMultipleFormats()
    {
        // Generate barcode with custom data
        var myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128);

        // Apply styling
        myBarcode.ResizeTo(300, 150);
        myBarcode.SetMargins(10);
        myBarcode.AddAnnotationTextAboveBarcode("Product ID");

        // Export to different stream formats
        Stream pngStream = myBarcode.ToPngStream();
        Stream jpegStream = myBarcode.ToJpegStream();
        Stream pdfStream = myBarcode.ToPdfStream();
        Stream tiffStream = myBarcode.ToTiffStream();

        // Use with HTTP response (ASP.NET Core example)
        // return File(pngStream, "image/png", "barcode.png");
    }

    public static byte[] GenerateQRCodeBytes(string data)
    {
        // Create QR code with error correction
        var qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500);

        // Convert to byte array via stream
        using (var stream = qrCode.ToStream())
        {
            using (var memoryStream = new MemoryStream())
            {
                stream.CopyTo(memoryStream);
                return memoryStream.ToArray();
            }
        }
    }
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.IO
Imports System.Drawing.Imaging

Public Class BarcodeStreamExporter
    Public Shared Sub ExportMultipleFormats()
        ' Generate barcode with custom data
        Dim myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128)

        ' Apply styling
        myBarcode.ResizeTo(300, 150)
        myBarcode.SetMargins(10)
        myBarcode.AddAnnotationTextAboveBarcode("Product ID")

        ' Export to different stream formats
        Dim pngStream As Stream = myBarcode.ToPngStream()
        Dim jpegStream As Stream = myBarcode.ToJpegStream()
        Dim pdfStream As Stream = myBarcode.ToPdfStream()
        Dim tiffStream As Stream = myBarcode.ToTiffStream()

        ' Use with HTTP response (ASP.NET Core example)
        ' return File(pngStream, "image/png", "barcode.png")
    End Sub

    Public Shared Function GenerateQRCodeBytes(data As String) As Byte()
        ' Create QR code with error correction
        Dim qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500)

        ' Convert to byte array via stream
        Using stream = qrCode.ToStream()
            Using memoryStream As New MemoryStream()
                stream.CopyTo(memoryStream)
                Return memoryStream.ToArray()
            End Using
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

Jak wybrać odpowiedni format?

Wybierz odpowiedni format w zależności od swoich wymagań:

  • PNG: Najlepszy do użytku w sieci, obsługuje przezroczystość, bezstratną kompresję
  • JPEG: Mniejsze rozmiary plików, idealne, gdy nie jest potrzebna przezroczystość
  • PDF: Idealny do integracji dokumentów, raportów i formatów do druku
  • TIFF: Wysoka jakość do celów archiwizacji, obsługa wielu stron
  • GIF: Ograniczona paleta kolorów, odpowiednia dla prostych BarCODE-ów z animacją

Jakie są typowe scenariusze przetwarzania strumieniowego?

Przetwarzanie BarCodes oparte na strumieniach umożliwia wiele praktycznych zastosowań:

  1. Bezpośrednia odpowiedź HTTP: dostarczanie BarCode do klientów internetowych bez pośredniego przechowywania
  2. Binarne przechowywanie w bazie danych: Przechowuj dane BarCode jako pola BLOB
  3. Buforowanie w pamięci: buforowanie wygenerowanych BARCODE-ów w scenariuszach wymagających wysokiej wydajności
  4. Łańcuchowanie strumieni: Przetwarzanie barcode'ów za pomocą potoków transformacji
  5. Przetwarzanie wsadowe: Generuj tysiące kodów kreskowych bez operacji wejścia/wyjścia na dysku

Praca z danymi strumieniowymi

Podczas pracy ze strumieniami może zaistnieć potrzeba odczytu BarCodes ze strumieni. Oto przykład przetwarzania w obie strony:

using IronBarCode;
using System.IO;
using System.Collections.Generic;

public class StreamRoundTrip
{
    public static void ProcessBarcodeStream()
    {
        // Generate barcode and get stream
        var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128);
        Stream barcodeStream = originalBarcode.ToStream();

        // Read barcode back from stream
        var results = BarcodeReader.Read(barcodeStream);

        foreach (var result in results)
        {
            Console.WriteLine($"Value: {result.Value}");
            Console.WriteLine($"Format: {result.BarcodeType}");
        }

        // Don't forget to dispose of the stream
        barcodeStream.Dispose();
    }
}
using IronBarCode;
using System.IO;
using System.Collections.Generic;

public class StreamRoundTrip
{
    public static void ProcessBarcodeStream()
    {
        // Generate barcode and get stream
        var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128);
        Stream barcodeStream = originalBarcode.ToStream();

        // Read barcode back from stream
        var results = BarcodeReader.Read(barcodeStream);

        foreach (var result in results)
        {
            Console.WriteLine($"Value: {result.Value}");
            Console.WriteLine($"Format: {result.BarcodeType}");
        }

        // Don't forget to dispose of the stream
        barcodeStream.Dispose();
    }
}
Imports IronBarCode
Imports System.IO
Imports System.Collections.Generic

Public Class StreamRoundTrip
    Public Shared Sub ProcessBarcodeStream()
        ' Generate barcode and get stream
        Dim originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128)
        Dim barcodeStream As Stream = originalBarcode.ToStream()

        ' Read barcode back from stream
        Dim results = BarcodeReader.Read(barcodeStream)

        For Each result In results
            Console.WriteLine($"Value: {result.Value}")
            Console.WriteLine($"Format: {result.BarcodeType}")
        Next

        ' Don't forget to dispose of the stream
        barcodeStream.Dispose()
    End Sub
End Class
$vbLabelText   $csharpLabel

Rozważania dotyczące wydajności

Podczas eksportowania kodów kreskowych jako strumieni należy wziąć pod uwagę następujące wskazówki dotyczące wydajności:

  • Ponowne użycie strumieni: Użyj MemoryStream z początkową pojemnością dla lepszej wydajności
  • Operacje asynchroniczne: W przypadku pracy z dużymi ilościami danych należy stosować metody asynchroniczne
  • Stream Pooling: Wdrożenie stream poolingu dla operacji o wysokiej częstotliwości
  • Wybór formatu: Wybieraj formaty mądrze —PNGjest zazwyczaj szybszy niż PDF

Pierwsze kroki z IronBarcode

Aby rozpocząć korzystanie z generowania kodów kreskowych opartego na strumieniach w swoich projektach, zapoznaj się z naszym obszernym przewodnikiem dla początkujących. Dokumentacja dotycząca eksportu BARCODE-ów jako strumienia zawiera dodatkowe przykłady i najlepsze praktyki dotyczące przepływów pracy opartych na strumieniach.

IronBarcode ułatwia tworzenie i eksportowanie kodów kreskowych do obiektów MemoryStream. To podejście oparte na strumieniach zapewnia doskonałą wydajność, zwiększone bezpieczeństwo oraz płynną integrację z nowoczesnymi aplikacjami natywnymi dla chmury.

Często Zadawane Pytania

Jak przekonwertować kod kreskowy na MemoryStream bez zapisywania na dysk?

Dzięki IronBarcode można bezpośrednio przekonwertować kod kreskowy na MemoryStream, używając metody ToStream(). Po prostu utwórz kod kreskowy za pomocą BarcodeWriter.CreateBarcode() i wywołaj ToStream() na wyniku. Domyślnie generuje to strumień PNG bez operacji I/O na plikach.

Jakie formaty obrazów mogę eksportować podczas konwersji kodów kreskowych na strumienie?

IronBarcode wspiera eksportowanie kodów kreskowych do strumieni w wielu formatach. Domyślnym formatem jest PNG przy użyciu metody ToStream(). Możesz również eksportować do innych formatów, używając specyficznych metod zaprojektowanych dla różnych typów obrazów, co pozwala na elastyczność w zależności od wymagań aplikacji.

Dlaczego warto używać generowania kodów kreskowych opartego na strumieniu zamiast metod opartych na plikach?

Generowanie kodów kreskowych oparte na strumieniu w IronBarcode oferuje zwiększone bezpieczeństwo przez unikanie plików tymczasowych, lepszą wydajność dzięki operacjom bezpośrednim w pamięci, płynną kompatybilność z chmurą dla środowisk konteneryzowanych oraz lepszą efektywność zasobów przez zmniejszoną przestrzeń dyskową i obciążenie systemu plików.

Czy mogę zastosować niestandardowe stylizowanie przed eksportem kodów QR jako strumieni?

Tak, IronBarcode pozwala na zastosowanie niestandardowego stylizowania do kodów QR przed ich eksportem jako strumienie. QRCodeWriter obsługuje wszystkie opcje stylizacji, a metoda ToStream() działa płynnie po zastosowaniu żądanych dostosowań, utrzymując wygląd stylizacji w wyniku strumienia.

Jakie są typowe zastosowania eksportowania kodów kreskowych jako MemoryStream?

Funkcja eksportu strumienia IronBarcode idealnie nadaje się do odpowiedzi API sieciowych, gdzie trzeba zwrócić kody kreskowe bezpośrednio w odpowiedziach HTTP, przechowywanie w bazie danych jako binarne bloby, załączniki e-mailowe oraz integrację z usługami chmurowymi lub środowiskami bezserwerowymi, gdzie dostęp do systemu plików jest ograniczony.

Jak utworzyć strumień kodu kreskowego w jednym wierszu kodu?

IronBarcode umożliwia utworzenie strumienia kodu kreskowego w jednym wierszu: BarcodeWriter.CreateBarcode("Twoja wartość", BarcodeEncoding.Code128).ToStream(). Tworzy to kod kreskowy z podaną wartością i kodowaniem, a następnie natychmiast przekształca go w MemoryStream bez pośrednich kroków.

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.