IRONSOFTWAREHOME
KORZYSTANIE Z IRONBARCODE

Skaner kodów kreskowych ASP.NET: przesyłanie plików i API REST z IronBarcode

Curtis Chau
Curtis Chau
Updated: 20 czerwca 2026

Skanowanie kodów kreskowych w ASP.NET staje się proste z IronBarcode: zainstaluj przez NuGet, wywołaj BarcodeReader.Read(), a uzyskaj zdekodowane wartości z danymi o typie, pewności i pozycji w jednym kroku — nie jest wymagana skomplikowana konfiguracja.

Skanowanie BarCode jest standardowym wymaganiem w nowoczesnych aplikacjach internetowych, wspierającym zarządzanie zapasami, przetwarzanie dokumentów i procesy weryfikacji biletów. Według GS1 BarCODE'y są wykorzystywane codziennie w ponad 6 miliardach transakcji na całym świecie — liczba ta podkreśla, jak kluczowe znaczenie dla każdego systemu biznesowego ma dokładny odczyt BarCODE'ów. Norma ISO/IEC 15415 określa wskaźniki jakości dla symboli kodów kreskowych 2D, natomiast norma ISO/IEC 15416 dotyczy kodów kreskowych liniowych 1D. IronBarcode obsługuje oba te typy kodów w sposób natywny.

Ten przewodnik pokazuje, jak dodać niezawodne skanowanie kodów kreskowych do aplikacji ASP.NET Core przy użyciu IronBarcode, obejmując instalację, przetwarzanie przesyłania plików, integrację REST API oraz wzorce wdrażania produkcyjnego. Na koniec będziesz mieć działający kod zarówno dla skanera przesyłania plików na stronie Razor, jak i punktu końcowego API JSON, który akceptuje obrazy zakodowane w base64 z dowolnego klienta.

Jak zainstalować IronBarcode w projekcie ASP.NET?

Rozpoczęcie pracy zajmuje tylko kilka minut. Biblioteka obsługuje zarówno aplikacje .NET Core, jak i tradycyjne aplikacje ASP.NET MVC, dzięki czemu można ją dostosować do różnych typów projektów. Wdrożenia Enterprise działają równie dobrze na platformach Azure, AWS Lambda i w kontenerach Docker. Wykorzystujące uczenie maszynowe wykrywanie biblioteki radzi sobie z trudnymi obrazami BarCode poprzez automatyczne stosowanie zaawansowanej korekcji obrazu, co jest szczególnie przydatne podczas przetwarzania zdjęć wykonanych aparatami telefonów komórkowych w zmiennych warunkach oświetleniowych.

Instalacja za pomocą menedżera pakietów NuGet

Otwórz konsolę menedżera pakietów w Visual Studio i uruchom:

PM > Install-Package BarCode

Alternatywnie można użyć interfejsu CLI platformy .NET:

dotnet add package BarCode

Lub wyszukaj "BarCode" w interfejsie użytkownika menedżera pakietów NuGet programu Visual Studio i kliknij opcję Zainstaluj. Pakiet automatycznie zarządza wszystkimi zależnościami.

W przypadku wdrożeń specyficznych dla danej platformy warto rozważyć użycie pakietów NuGet zoptymalizowanych pod kątem docelowego środowiska. Biblioteka oferuje zarówno pakiety standardowe, jak i BarCode.Slim, dostosowane do różnych scenariuszy wdrożeniowych. Pełny opis instalacji znajduje się w przewodniku instalacji IronBarcode.

Konfiguracja projektu

Po zainstalowaniu dodaj niezbędną instrukcję using do plików C#:

using IronBarCode;

Ten import zapewnia dostęp do pełnych możliwości IronBarcode w zakresie odczytu i generowania kodów kreskowych. Biblioteka obsługuje ponad 30 formatów BARCODE, w tym QR Code, Code 128, Code 39, Data Matrix i PDF417. Zapoznaj się z pełną listą obsługiwanych formatów BARCODE, aby sprawdzić zgodność z Twoim zastosowaniem.

W przypadku problemów z instalacją należy zapoznać się z przewodnikiem dotyczącym rozwiązywania problemów z pakietami NuGet lub złożyć zgłoszenie techniczne w celu uzyskania specjalistycznego wsparcia.

Wybór odpowiedniego wzorca architektury

Podczas wdrażania skanowania BarCode w ASP.NET dostępne są dwa główne podejścia architektoniczne. Zrozumienie tych wzorców pomoże Ci wybrać odpowiednie ustawienia czytnika BarCode dla każdego przypadku użycia:

// Server-side processing -- recommended for most ASP.NET scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    UseConfidenceThreshold = true,
    ConfidenceThreshold = 0.85
};

var results = BarcodeReader.Read(stream, options);

foreach (var barcode in results)
{
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Text}");
}

Podejście po stronie serwera zapewnia maksymalną kontrolę nad przetwarzaniem obrazów i działa spójnie we wszystkich przeglądarkach. Gdy serwer przetwarza każdy obraz, otrzymujesz również przejrzystą ścieżkę audytu: każdy zeskanowany BarCode przechodzi przez warstwę aplikacji, gdzie możesz go zarejestrować, zweryfikować w bazie danych lub uruchomić dalsze procesy. Ten wzorzec szczególnie dobrze sprawdza się w branżach podlegających regulacjom, takich jak opieka zdrowotna, logistyka i produkcja, gdzie każde skanowanie musi być rejestrowane.

W przypadku integracji przechwytywania obrazu z kamery po stronie klienta, nowoczesne przeglądarki obsługują API MediaDevices do dostępu do kamery, które można połączyć z serwerowym przetwarzaniem IronBarcode poprzez REST API — omówiono szczegółowo w dalszej części tego przewodnika. Wybór przetwarzania po stronie serwera upraszcza również model bezpieczeństwa: nie ma wrażliwej logiki przetwarzania wystawionej w przeglądarce, a cała walidacja odbywa się za granicą aplikacji.

Skanowanie BarCode po stronie klienta a skanowanie po stronie serwera – kompromisy
AspektPrzechwytywanie po stronie klienta + przetwarzanie na serwerzeCzyste przetwarzanie po stronie serwera
Najlepsze dlaSkanowanie w czasie rzeczywistym za pomocą kameryPrzetwarzanie wsadowe, przesyłanie plików
Obsługa przeglądarekTylko nowoczesne przeglądarkiWszystkie przeglądarki
Doświadczenie użytkownikaNatychmiastowa informacja zwrotnaStandardowy proces przesyłania plików
Model bezpieczeństwaBardziej złożone (CORS, autoryzacja)Proste
Wykorzystanie przepustowościNiższy (przetworzony wstępnie na urządzeniu)Wyższa (przesyłanie surowych obrazów)

Jak wdrożyć skanowanie BarCode przy przesyłaniu plików?

Skanowanie plików przesyłanych to najczęstszy scenariusz wykorzystania BarCODE w aplikacjach internetowych ASP.NET. Ten wzorzec sprawdza się przy przetwarzaniu faktur, etykiet wysyłkowych lub dowolnych dokumentów z osadzonymi BARCODE-ami. Aby zwiększyć przepustowość, warto rozważyć wdrożenie asynchronicznego odczytu BarCode, co pozwoli na obsługę wielu przesyłek jednocześnie.

Tworzenie formularza przesyłania

Utwórz responsywny formularz HTML w widoku ASP.NET:

@* Razor view -- barcode upload form *@
<form method="post" enctype="multipart/form-data" id="barcodeForm">
    <div class="form-group">
        <label for="barcodeFile">Select Barcode Image:</label>
        <input type="file" name="barcodeFile" id="barcodeFile"
               accept="image/*,.pdf" class="form-control"
               capture="environment" />
    </div>
    <button type="submit" class="btn btn-primary" id="scanBtn">
        <span class="spinner-border spinner-border-sm d-none" role="status"></span>
        Scan Barcode
    </button>
</form>
<div id="results">
    @ViewBag.BarcodeResult
</div>

Atrybut capture="environment" aktywuje tylną kamerę na urządzeniach mobilnych, dając użytkownikom natywne, przypominające kamerę doświadczenie bez JavaScript.

Wdrażanie bezpiecznego przetwarzania zaplecza

Akcja kontrolera obsługuje walidację plików, przetwarzanie strumienia pamięci oraz formatowanie wyników:

[HttpPost]
[ValidateAntiForgeryToken]
[RequestSizeLimit(10_000_000)] // 10MB limit
public async Task<IActionResult> ScanBarcode(IFormFile barcodeFile)
{
    var allowedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif",
                                    ".tiff", ".bmp", ".pdf" };
    var extension = Path.GetExtension(barcodeFile.FileName).ToLowerInvariant();

    if (!allowedExtensions.Contains(extension))
    {
        ModelState.AddModelError("", "Invalid file type");
        return View();
    }

    if (barcodeFile != null && barcodeFile.Length > 0)
    {
        using var stream = new MemoryStream();
        await barcodeFile.CopyToAsync(stream);
        stream.Position = 0;

        var options = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Balanced,
            ExpectMultipleBarcodes = true,
            ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional |
                                BarcodeEncoding.QRCode |
                                BarcodeEncoding.DataMatrix,
            ImageFilters = new ImageFilterCollection
            {
                new SharpenFilter(),
                new ContrastFilter()
            }
        };

        var results = BarcodeReader.Read(stream, options);

        ViewBag.BarcodeResult = results.Any()
            ? string.Join("<br/>", results.Select(r => $"<strong>{r.BarcodeType}:</strong> {r.Text}"))
            : "No barcodes found in the image.";
    }

    return View();
}

Ta implementacja sprawdza typ pliku przed przetworzeniem, odczytuje BARCODES ze strumienia pamięci i zwraca wszystkie wykryte wyniki. IronBarcode przetwarza różne formaty obrazów, w tym wielostronicowe pliki TIFF, GIF i dokumenty PDF, eliminując konieczność stosowania kodu obsługującego konkretne formaty.

Jak wygląda zeskanowany tekst źródłowy i docelowy

Kod kreskowy Code 128 kodujący adres URL 'https://ironsoftware.com/csharp/barcode/' wyświetlający maszynowo czytelne paski z tekstem czytelnym dla człowieka poniżej dla dokładnego skanowania w aplikacjach do odczytu kodów kreskowych w ASP.NET

Powyższy przykład przedstawia standardowy BarCode Code 128 — format powszechnie stosowany w aplikacjach do wysyłki i zarządzania zapasami. Po skanowaniu ekran wyników potwierdza zdekodowaną wartość wraz z metadanymi dotyczącymi pewności:

Interfejs aplikacji internetowej ASP.NET Core wyświetlający pomyślne wyniki skanowania kodów kreskowych z formularzem przesyłania plików pokazującym zdekodowaną wartość kodu Code128 i metadane dotyczące pewności

IronBarcode zwraca typ kodu kreskowego, zdekodowaną wartość, wynik pewności oraz dane dotyczące położenia dla każdego kodu kreskowego wykrytego na przesłanym obrazie.

Jak zbudować interfejs API REST do skanowania BarCodeów?

Nowoczesne aplikacje ASP.NET często udostępniają funkcje skanowania kodów kreskowych za pośrednictwem interfejsów API REST, umożliwiając integrację z aplikacjami mobilnymi, aplikacjami jednostronicowymi lub usługami stron trzecich. Ten wzorzec obsługuje przechwytywanie obrazu z kamery po stronie klienta z przetwarzaniem po stronie serwera.

Kwestie bezpieczeństwa związane z interfejsami API BarCode

Przed napisaniem kontrolera zaplanuj warstwę bezpieczeństwa. Dane BarCode mogą zawierać dowolną treść, dlatego należy zawsze weryfikować wprowadzane dane. Aby zapewnić pełną ochronę, należy przestrzegać wytycznych dotyczących bezpieczeństwa IronBarcode:

  • Sprawdzanie poprawności danych wejściowych: Oczyszczanie treści BarCode przed ich zapisaniem lub wykonaniem operacji na nich
  • Ograniczanie przepustowości: Użyj wbudowanego oprogramowania pośredniczącego .NET Core do ograniczania przepustowości, aby zapobiec nadużyciom API
  • Uwierzytelnianie: Zabezpiecz punkty końcowe za pomocą tokenów JWT lub kluczy API
  • Wymóg stosowania protokołu HTTPS: Cały ruch API związanego z kodami kreskowymi musi odbywać się za pośrednictwem protokołu TLS
  • Polityka CORS: Ogranicz, które źródła mogą wywoływać Twój punkt końcowy skanowania
  • Zarządzanie kluczami licencyjnymi: Prawidłowe stosowanie kluczy licencyjnych i konfigurowanie ich w pliku web.config dla środowiska produkcyjnego

Tworzenie kontrolera API produkcyjnego

[ApiController]
[Route("api/[controller]")]
public class BarcodeController : ControllerBase
{
    private readonly ILogger<BarcodeController> _logger;
    private readonly IMemoryCache _cache;

    public BarcodeController(ILogger<BarcodeController> logger, IMemoryCache cache)
    {
        _logger = logger;
        _cache = cache;
    }

    [HttpPost("scan")]
    [ProducesResponseType(typeof(BarcodeResponse), 200)]
    [ProducesResponseType(typeof(ErrorResponse), 400)]
    public async Task<IActionResult> ScanBarcode([FromBody] BarcodeRequest request)
    {
        try
        {
            if (string.IsNullOrEmpty(request.ImageBase64))
                return BadRequest(new ErrorResponse { Error = "Image data is required" });

            var cacheKey = $"barcode_{request.ImageBase64.GetHashCode()}";
            if (_cache.TryGetValue(cacheKey, out BarcodeResponse cachedResult))
                return Ok(cachedResult);

            byte[] imageBytes = Convert.FromBase64String(request.ImageBase64);

            if (imageBytes.Length > 10 * 1024 * 1024)
                return BadRequest(new ErrorResponse { Error = "Image size exceeds 10MB limit" });

            var options = new BarcodeReaderOptions
            {
                Speed = ReadingSpeed.Faster,
                ExpectMultipleBarcodes = request.ExpectMultiple ?? false,
                UseConfidenceThreshold = true,
                ConfidenceThreshold = 0.8
            };

            var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));

            var response = new BarcodeResponse
            {
                Success = true,
                Barcodes = results.Select(r => new BarcodeData
                {
                    Type = r.BarcodeType.ToString(),
                    Value = r.Text,
                    Confidence = r.Confidence,
                    Position = new BarcodePosition
                    {
                        X = r.Points.Select(p => p.X).Min(),
                        Y = r.Points.Select(p => p.Y).Min(),
                        Width = r.Width,
                        Height = r.Height
                    }
                }).ToList()
            };

            _cache.Set(cacheKey, response, TimeSpan.FromMinutes(5));
            return Ok(response);
        }
        catch (FormatException)
        {
            return BadRequest(new ErrorResponse { Error = "Invalid base64 image data" });
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error processing barcode scan");
            return StatusCode(500, new ErrorResponse { Error = "Internal server error" });
        }
    }
}

public record BarcodeRequest(string ImageBase64, bool? ExpectMultiple);

public record BarcodeResponse
{
    public bool Success { get; init; }
    public List<BarcodeData> Barcodes { get; init; } = new();
}

public record BarcodeData
{
    public string Type { get; init; }
    public string Value { get; init; }
    public double Confidence { get; init; }
    public BarcodePosition Position { get; init; }
}

public record BarcodePosition(int X, int Y, int Width, int Height);

public record ErrorResponse
{
    public bool Success => false;
    public string Error { get; init; }
}

Ten punkt końcowy akceptuje obrazy zakodowane w formacie base64 — standardowym formacie przesyłania obrazów przez HTTP. Odpowiedź zawiera typ BARCODE, zdekodowaną wartość, wynik pewności oraz pozycję. W przypadku dużych ilości danych warto zapoznać się z opcjami przetwarzania partii BARCODE-ów oraz optymalizacji szybkości odczytu.

W jaki sposób API obsługuje wiele BarCodes?

Trzy różne formaty kodów kreskowych oznaczone A B C demonstrujące symbologie QR Code, Code128 i DataMatrix, które IronBarcode przetwarza jednocześnie w środowiskach produkcyjnych

IronBarcode przetwarza wiele kodów kreskowych w jednym obrazie za pomocą jednego wywołania, zwracając tablicę wyników. Każdy wpis w odpowiedzi zawiera dane o położeniu, dzięki czemu aplikacja kliencka może podświetlić wykryte BARCODE na ekranie.

Zakładka sieci narzędzi deweloperskich przeglądarki pokazująca pomyślną odpowiedź API JSON zawierającą tablicę trzech wykrytych kodów kreskowych z kompletacją metadanych, w tym typie, wartości, pewności i współrzędnych pozycji

Strukturalna odpowiedź JSON zapewnia aplikacjom klienckim wszystko, co jest potrzebne do przetwarzania i wyświetlania wyników skanowania BARCODE bez konieczności dodatkowego wyszukiwania.

Jak radzisz sobie z trudnymi obrazami BarCode?

W praktyce skanowanie kodów kreskowych często wiąże się z niedoskonałymi obrazami — zdjęciami wykonanymi pod kątem, przy słabym oświetleniu lub z częściowo uszkodzonymi kodami kreskowymi. IronBarcode radzi sobie z tymi scenariuszami dzięki zaawansowanym możliwościom przetwarzania obrazu i progom pewności opartym na uczeniu maszynowym.

Diagnozowanie typowych problemów związanych ze skanowaniem

Przed wprowadzeniem poprawek określ, do której kategorii należy dany problem. Większość błędów skanowania w środowisku produkcyjnym można podzielić na pięć grup: problemy z jakością obrazu (rozmycie, szumy, niska rozdzielczość), problemy geometryczne (obrót, przekrzywienie, zniekształcenie perspektywy), problemy związane z uszkodzeniami (podarte etykiety, rozmazany tusz), problemy środowiskowe (odblaski, cienie, nierównomierne oświetlenie) oraz fałszywie pozytywne wykrycie, w którym czytnik wykrywa BARCODE, który nie istnieje.

Znajomość kategorii pomaga dobrać odpowiednią kombinację filtrów i prędkość odczytu bez konieczności przeprowadzania zbędnego przetwarzania każdego obrazu. Dla większości scenariuszy aplikacji internetowych, rozpoczęcie od ReadingSpeed.Balanced i AutoRotate = true obejmuje większość przypadków. Zwiększ poziom do ExtremeDetail tylko wtedy, gdy pierwsze przejście nie zwróci wyników.

Podejście wieloetapowe w poniższym kodzie realizuje tę wielopoziomową strategię. Szybki pierwszy przebieg szybko obsługuje typowe obrazy, utrzymując niskie opóźnienie średnie w typowych przypadkach. Szczegółowa druga faza przetwarzania jest uruchamiana tylko wtedy, gdy pierwsza faza zakończy się niepowodzeniem, co gwarantuje, że ponosisz dodatkowe koszty przetwarzania tylko wtedy, gdy jest to rzeczywiście konieczne. Ten wzorzec zapewnia responsywność punktu końcowego ASP.NET przy normalnym obciążeniu, a jednocześnie niezawodnie obsługuje trudne przypadki skrajne.

Typowe problemy związane ze skanowaniem BarCodes i ich rozwiązania
ProblemObjawRozwiązanie
Niewyraźny obrazNiskie wyniki pewności, pominięte fragmentyZastosuj filtr SharpenFilter, zwiększ prędkość ExtremeDetail
Obrócony BarCodeBarCode nie został wykrytyWłącz AutoRotate = true
Uszkodzony BarCodeCzęściowe odczyty, nieprawidłowe wartościWłącz korektę błędów, użyj RemoveFalsePositive
Słaby kontrastWykrywanie niespójnościZastosuj filtry ContrastFilter i BrightnessFilter
Zbyt wolne działanieDuże opóźnienia podczas przesyłania plikówUżyj ReadingSpeed.Faster, włącz wielowątkowość

Wdrażanie wieloprzebiegówego przetwarzania obrazów

W przypadku trudnych obrazów najlepsze wyniki daje podejście oparte na przetwarzaniu warstwowym, które nie obniża wydajności w przypadku łatwych obrazów:

public class AdvancedBarcodeProcessor
{
    private readonly ILogger<AdvancedBarcodeProcessor> _logger;

    public async Task<List<ScannedBarcode>> ProcessChallengingImage(Stream imageStream)
    {
        // First pass -- fast, minimal processing
        var fastOptions = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Balanced,
            ExpectMultipleBarcodes = true,
            AutoRotate = false,
            UseConfidenceThreshold = true,
            ConfidenceThreshold = 0.85
        };

        var results = BarcodeReader.Read(imageStream, fastOptions);

        if (!results.Any())
        {
            // Second pass -- aggressive image correction
            imageStream.Position = 0;

            var detailedOptions = new BarcodeReaderOptions
            {
                Speed = ReadingSpeed.ExtremeDetail,
                ExpectMultipleBarcodes = true,
                AutoRotate = true,
                RemoveFalsePositive = true,
                UseConfidenceThreshold = true,
                ConfidenceThreshold = 0.6,
                Multithreaded = true,
                ExpectBarcodeTypes = BarcodeEncoding.All,
                ImageFilters = new ImageFilterCollection
                {
                    new SharpenFilter(2.5f),
                    new ContrastFilter(2.0f),
                    new BrightnessFilter(1.2f),
                    new InvertFilter()
                }
            };

            results = BarcodeReader.Read(imageStream, detailedOptions);
            _logger.LogInformation("Second pass detected {Count} barcodes", results.Count());
        }

        return results.Select(r => new ScannedBarcode
        {
            Value = r.Text,
            BarcodeType = r.BarcodeType.ToString(),
            Confidence = r.Confidence,
            RotationAngle = r.RotationAngle,
            PageNumber = r.PageNumber
        }).ToList();
    }
}

public record ScannedBarcode
{
    public string Value { get; init; }
    public string BarcodeType { get; init; }
    public double Confidence { get; init; }
    public float RotationAngle { get; init; }
    public int PageNumber { get; init; }
}

Klasa BarcodeReaderOptions zapewnia precyzyjną kontrolę nad każdym aspektem skanowania. Ustawienie AutoRotate obsługuje obrazy zarejestrowane pod dowolnym kątem, podczas gdy filtry obrazów poprawiają przejrzystość przy rozmytych lub mało kontrastowych kodach kreskowych. Szczegółowe informacje na temat konfiguracji można znaleźć w przykładzie ustawień czytnika BarCode oraz w ustawieniach czytnika dotyczących plików PDF.

Podczas pracy z plikami PDF warto rozważyć umieszczenie BARCODE-ów na plikach PDF lub tworzenie BARCODE-ów jako dokumentów PDF. W przypadku przetwarzania dużych ilości danych włączenie wielowątkowości za pomocą funkcji async i multithread znacznie poprawia przepustowość.

Dodanie strategii kompatybilności z przeglądarkami i strategii awaryjnych

Obsługa różnych przeglądarek wymaga stopniowego ulepszania. Nowoczesne przeglądarki na Androidzie oraz Chrome, Edge i Firefox na komputerach stacjonarnych obsługują API MediaDevices.getUserMedia() do dostępu do kamery. Safari na iOS obsługuje tę funkcję od wersji 11. Starsze przeglądarki Enterprise, tryby zgodności IE11 oraz niektóre zablokowane środowiska Enterprise mogą w ogóle nie obsługiwać dostępu do kamery, dlatego rezerwowa ścieżka przesyłania plików musi zawsze pozostawać funkcjonalna.

Zalecanym podejściem jest wykorzystanie wykrywania funkcji w czasie wykonywania zamiast sprawdzania agenta użytkownika, a następnie odpowiednie wyświetlanie lub ukrywanie interfejsu kamery. Zacznij od interfejsu obsługującego kamerę, a w razie potrzeby płynnie przejdź do przesyłania plików:

@* Razor view with progressive enhancement *@
<div class="barcode-scanner-container">
    @* Camera capture -- hidden until JavaScript confirms support *@
    <div id="cameraSection" class="d-none">
        <video id="videoPreview" class="w-100" autoplay></video>
        <button id="captureBtn" class="btn btn-primary mt-2">Capture and Scan</button>
    </div>

    @* File upload -- always available as fallback *@
    <div id="uploadSection">
        <form method="post" enctype="multipart/form-data"
              asp-action="ScanBarcode" asp-controller="Barcode">
            <div class="form-group">
                <label>Upload Barcode Image:</label>
                <input type="file" name="file" accept="image/*,.pdf"
                       class="form-control" required />
            </div>
            <button type="submit" class="btn btn-primary">Upload and Scan</button>
        </form>
    </div>
</div>

Integracja z Blazorem zapewnia obsługę nowoczesnych aplikacji internetowych przy minimalnej konfiguracji, jeśli preferujesz podejście oparte na komponentach. W przypadku rozwiązywania problemów związanych z wdrażaniem należy zapoznać się z przewodnikiem dotyczącym wyjątków kopiowania środowisk uruchomieniowych.

Jakie są Twoje kolejne kroki?

Skanowanie kodów kreskowych w ASP.NET jest proste dzięki IronBarcode. Instalujesz jeden pakiet NuGet, wywołujesz BarcodeReader.Read(), a uzyskujesz niezawodne, zdekodowane wyniki w ponad 30 formatach — w tym w trudnych rzeczywistych obrazach, z którymi inne biblioteki mają problemy.

Aby dalej rozwijać się w tym zakresie, zapoznaj się z poniższymi zasobami:

Zacznij od bezpłatnej licencji próbnej, aby przetestować IronBarcode w swojej aplikacji ASP.NET bez żadnych ograniczeń. Wersja próbna zapewnia pełny dostęp do wszystkich funkcji, w tym wykrywania wielu formatów, korekcji obrazów oraz wzorców REST API przedstawionych w tym przewodniku — dzięki czemu można ocenić wydajność na własnych obrazach przed zakupem licencji produkcyjnej. W przypadku aplikacji mobilnych .NET MAUI, które wymagają skanowania na urządzeniu, zapoznaj się z samouczkiem dotyczącym skanera BARCODE .NET MAUI, który rozszerza ten sam interfejs API na platformy iOS i Android.

Curtis Chau
Autor tekstów technicznych

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.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta