ASP.NET Core Barkod Tarayıcı

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

Giriş

ASP.NET Core, modern web uygulamaları oluşturmak için platformlar arası bir çerçevedir. Razor Pages modeli, HTTP isteklerini sayfa tabanlı bir yaklaşımla ele alarak, sunucu tarafı barkod işlemleri için uygun hale getirir. IronBarcode ile yüklenen görüntüler IFormFile nesneleri olarak alınabilir, bayt dizilerine dönüştürülebilir ve geçici dosyalar diske yazılmadan doğrudan BARCODE okuyucuya aktarılabilir.

Bu makale, yüklenen görsellerden barkod ve QR kodlarını taramak ve sunucudan barkod üretmek için IronBarcode'un bir ASP.NET Core Razor Pages uygulamasına nasıl entegre edileceğini açıklamaktadır.

IronBarcode: C# Barkod Kütüphanesi

IronBarcode, .NET uygulamalarında barkod okuma ve yazma için sağlam bir API sağlar. Kütüphane, görüntü işlemeyi dahili olarak gerçekleştirir; böylece geliştiriciler, ayrı görüntü işleme kütüphanelerine ihtiyaç duymadan ham baytları, dosya yollarını veya akışları doğrudan BarcodeReader.Read yöntemine aktarabilir. QR Kodu, Code 128, Code 39, PDF417, EAN ve daha pek çok barkod formatını destekler.

Web uygulamaları için IronBarcode özellikle kullanışlıdır çünkü görüntüleri tamamen bellek içinde işler. Yüklenen dosyalar asla diske kaydedilmez, bu da dağıtımı basitleştirir ve temizleme yükünü azaltır. Aynı kütüphane, BarcodeWriter.CreateBarcode ile BARCODE'lar da oluşturur, böylece hem okuma hem de yazma için tek bir bağımlılık sağlar.

ASP.NET Core'da Barkod Tarayıcı Oluşturma Adımları

ASP.NET Core Razor Pages ve IronBarcode kullanarak web tabanlı bir barkod tarayıcı oluşturmak için bu adımları izleyin.

Ön Koşullar

  1. Visual Studio 2022 veya daha yenisi (veya .NET desteği olan herhangi bir IDE)
  2. .NET 6.0 veya daha yeni SDK

Projeyi Oluşturun

Yeni bir ASP.NET Core Web Uygulaması (Razor Pages) projesi oluşturun. Bu, Visual Studio'nun proje sihirbazı aracılığıyla veya komut satırından yapılabilir:

dotnet new webapp -n BarcodeWebApp
dotnet new webapp -n BarcodeWebApp
SHELL

IronBarcode Kütüphanesini Yükleyin

NuGet Paket Yöneticisi Konsolu kullanarak IronBarcode kütüphanesini yükleyin. Visual Studio'da Tools > NuGet Package Manager > Package Manager Console konumuna gidin ve şunu çalıştırın:

Install-Package BarCode

Alternatif olarak, dotnet add package BarCode ile komut satırından yükleyin. En son sürüm NuGet web sitesinde bulunmaktadır.

Ön Yüz

Önyüz, bir dosya yükleme formundan ve sonuç gösterim alanından oluşur. Form, ikili dosya yüklemelerini işlemek için enctype="multipart/form-data" kullanır. Barkod algılandığında, sonuç başarı uyarısı olarak yüklenen görüntünün altında görünür.

Index.cshtml dosyasındaki içeriği aşağıdakilerle değiştirin:

@page
@model IndexModel
@{
    ViewData["Title"] = "Barcode Scanner";
}

<div class="container mt-4">
    <h1 class="mb-4">Barcode Scanner</h1>

    <div class="card mb-4">
        <div class="card-header"><h5>Upload & Read Barcode</h5></div>
        <div class="card-body">
            <form method="post" asp-page-handler="Upload" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="file" class="form-label">Select a barcode image:</label>
                    <input type="file" class="form-control" id="file"
                           name="UploadedFile" accept="image/*" />
                </div>
                <button type="submit" class="btn btn-primary">Scan Barcode</button>
            </form>

            @if (Model.ImageDataUrl != null)
            {
                <div class="mt-3">
                    <h6>Uploaded Image:</h6>
                    <img src="@Model.ImageDataUrl" alt="Uploaded barcode"
                         style="max-width: 300px;" class="img-thumbnail" />
                </div>
            }

            @if (Model.BarcodeResult != null)
            {
                <div class="alert alert-success mt-3">
                    <strong>Barcode Value:</strong> @Model.BarcodeResult
                </div>
            }

            @if (Model.ErrorMessage != null)
            {
                <div class="alert alert-warning mt-3">@Model.ErrorMessage</div>
            }
        </div>
    </div>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Barcode Scanner";
}

<div class="container mt-4">
    <h1 class="mb-4">Barcode Scanner</h1>

    <div class="card mb-4">
        <div class="card-header"><h5>Upload & Read Barcode</h5></div>
        <div class="card-body">
            <form method="post" asp-page-handler="Upload" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="file" class="form-label">Select a barcode image:</label>
                    <input type="file" class="form-control" id="file"
                           name="UploadedFile" accept="image/*" />
                </div>
                <button type="submit" class="btn btn-primary">Scan Barcode</button>
            </form>

            @if (Model.ImageDataUrl != null)
            {
                <div class="mt-3">
                    <h6>Uploaded Image:</h6>
                    <img src="@Model.ImageDataUrl" alt="Uploaded barcode"
                         style="max-width: 300px;" class="img-thumbnail" />
                </div>
            }

            @if (Model.BarcodeResult != null)
            {
                <div class="alert alert-success mt-3">
                    <strong>Barcode Value:</strong> @Model.BarcodeResult
                </div>
            }

            @if (Model.ErrorMessage != null)
            {
                <div class="alert alert-warning mt-3">@Model.ErrorMessage</div>
            }
        </div>
    </div>
</div>
HTML

Yerleşim, ASP.NET Core'un varsayılan şablonunda zaten bulunan Bootstrap sınıflarını kullanır. Form, Upload sayfa işleyicisine gönderilir ve koşullu bloklar, yüklenen görüntünün önizlemesini, kod çözülmüş sonucu veya bir hata mesajını görüntüler.

Örnek Giriş Barkodları

Taramayı test etmek için aşağıdaki örnek barkodlar kullanılabilir. Her resim farklı bir format ve değer kodlar:

ASP.NET Core Barcode Scanner - Sample QR Code input encoding a URL

"https://ironsoftware.com" kodlayan QR Kod

ASP.NET Core Barcode Scanner - Sample Code 128 barcode input

Kod 128 barkod şifreleme "IronBarcode-2026"

ASP.NET Core Barcode Scanner - Sample Code 39 barcode input

"HELLO123" kodlayan Code 39 barkodu

IronBarcode ile Barkod Taraması

Sunucu tarafı mantığı, OnPostUploadAsync yönteminde yüklenen dosyayı işler. Yüklenen IFormFile bir bayt dizisine okunur ve bu dizi doğrudan BarcodeReader.Read'ye aktarılır. Bu, geçici dosyaların kaydedilmesini önler ve işlemi tamamen bellekte tutar.

Index.cshtml.cs dosyasındaki içeriği şu şekilde değiştirin:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronBarCode;

public class IndexModel : PageModel
{
    [BindProperty]
    public IFormFile? UploadedFile { get; set; }

    public string? BarcodeResult { get; set; }
    public string? ErrorMessage { get; set; }
    public string? ImageDataUrl { get; set; }

    public void OnGet()
    {
    }

    public async Task<IActionResult> OnPostUploadAsync()
    {
        if (UploadedFile == null || UploadedFile.Length == 0)
        {
            ErrorMessage = "Please select an image file.";
            return Page();
        }

        try
        {
            using var ms = new MemoryStream();
            await UploadedFile.CopyToAsync(ms);
            byte[] imageBytes = ms.ToArray();

            // Store image as base64 for preview display
            string base64 = Convert.ToBase64String(imageBytes);
            ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}";

            // Read barcode from uploaded image bytes
            var results = BarcodeReader.Read(imageBytes);

            if (results != null && results.Count() > 0)
            {
                BarcodeResult = string.Join("\n",
                    results.Select(r => r.Value));
            }
            else
            {
                ErrorMessage = "No barcode detected in the uploaded image.";
            }
        }
        catch (Exception ex)
        {
            ErrorMessage = $"Error processing image: {ex.Message}";
        }

        return Page();
    }
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using IronBarCode;

public class IndexModel : PageModel
{
    [BindProperty]
    public IFormFile? UploadedFile { get; set; }

    public string? BarcodeResult { get; set; }
    public string? ErrorMessage { get; set; }
    public string? ImageDataUrl { get; set; }

    public void OnGet()
    {
    }

    public async Task<IActionResult> OnPostUploadAsync()
    {
        if (UploadedFile == null || UploadedFile.Length == 0)
        {
            ErrorMessage = "Please select an image file.";
            return Page();
        }

        try
        {
            using var ms = new MemoryStream();
            await UploadedFile.CopyToAsync(ms);
            byte[] imageBytes = ms.ToArray();

            // Store image as base64 for preview display
            string base64 = Convert.ToBase64String(imageBytes);
            ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}";

            // Read barcode from uploaded image bytes
            var results = BarcodeReader.Read(imageBytes);

            if (results != null && results.Count() > 0)
            {
                BarcodeResult = string.Join("\n",
                    results.Select(r => r.Value));
            }
            else
            {
                ErrorMessage = "No barcode detected in the uploaded image.";
            }
        }
        catch (Exception ex)
        {
            ErrorMessage = $"Error processing image: {ex.Message}";
        }

        return Page();
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports IronBarCode
Imports System.IO
Imports System.Threading.Tasks

Public Class IndexModel
    Inherits PageModel

    <BindProperty>
    Public Property UploadedFile As IFormFile

    Public Property BarcodeResult As String
    Public Property ErrorMessage As String
    Public Property ImageDataUrl As String

    Public Sub OnGet()
    End Sub

    Public Async Function OnPostUploadAsync() As Task(Of IActionResult)
        If UploadedFile Is Nothing OrElse UploadedFile.Length = 0 Then
            ErrorMessage = "Please select an image file."
            Return Page()
        End If

        Try
            Using ms As New MemoryStream()
                Await UploadedFile.CopyToAsync(ms)
                Dim imageBytes As Byte() = ms.ToArray()

                ' Store image as base64 for preview display
                Dim base64 As String = Convert.ToBase64String(imageBytes)
                ImageDataUrl = $"data:{UploadedFile.ContentType};base64,{base64}"

                ' Read barcode from uploaded image bytes
                Dim results = BarcodeReader.Read(imageBytes)

                If results IsNot Nothing AndAlso results.Count() > 0 Then
                    BarcodeResult = String.Join(vbLf, results.Select(Function(r) r.Value))
                Else
                    ErrorMessage = "No barcode detected in the uploaded image."
                End If
            End Using
        Catch ex As Exception
            ErrorMessage = $"Error processing image: {ex.Message}"
        End Try

        Return Page()
    End Function
End Class
$vbLabelText   $csharpLabel

Yukarıdaki koddaki başlıca adımlar:

  1. Yüklemeyi al - IFormFile, [BindProperty] aracılığıyla bağlanır ve POST işleyicisinde alınır.
  2. Baytlara dönüştür - Dosya bir MemoryStream dosyasına kopyalanır ve bir bayt dizisine dönüştürülür. Bu, web tarayıcı örneğinde kullanılan yaklaşımın aynısıdır, ancak base64 dizeleri yerine ASP.NET Core'un IFormFile öğesine uyarlanmıştır.
  3. BARCODE oku - BarcodeReader.Read(imageBytes) görüntüyü işler ve algılanan tüm BARCODE'ları döndürür.
  4. Sonucu görüntüle - Algılanan tüm barkod değerleri birleştirilir ve arayüzde görüntülenir.

Aşağıdaki GIF, bir barkod resmi yükleyip çözülen sonucu göstererek barkod okuyucunun nasıl çalıştığını göstermektedir:

ASP.NET Core Barcode Scanner - Demonstration of uploading and reading a barcode

ASP.NET Core uygulamasında yüklenen bir barkod görüntüsünü tarayan barkod okuyucu

Base64 Resim Verilerini İşleme

Görüntü verilerini base64 dizeleri olarak alan uygulamalar için (örneğin, web kamerası yakalamaları veya JavaScript canvas'tan), aynı BarcodeReader.Read yöntemi, base64'ten kod çözülmüş bayt dizileriyle de çalışır. Bu model, AJAX aracılığıyla görüntü verileri gönderen tek sayfalık uygulamalarda yaygındır:

public string ReadBarCode(string imageDataBase64)
{
    // Decode the base64 image data
    var splitObject = imageDataBase64.Split(',');
    byte[] imageByteData = Convert.FromBase64String(
        (splitObject.Length > 1) ? splitObject[1] : splitObject[0]);

    // Read barcode directly from byte array
    var results = BarcodeReader.Read(imageByteData);

    return $"{DateTime.Now}: Barcode is ({results.First().Value})";
}
public string ReadBarCode(string imageDataBase64)
{
    // Decode the base64 image data
    var splitObject = imageDataBase64.Split(',');
    byte[] imageByteData = Convert.FromBase64String(
        (splitObject.Length > 1) ? splitObject[1] : splitObject[0]);

    // Read barcode directly from byte array
    var results = BarcodeReader.Read(imageByteData);

    return $"{DateTime.Now}: Barcode is ({results.First().Value})";
}
Public Function ReadBarCode(imageDataBase64 As String) As String
    ' Decode the base64 image data
    Dim splitObject = imageDataBase64.Split(","c)
    Dim imageByteData As Byte() = Convert.FromBase64String(
        If(splitObject.Length > 1, splitObject(1), splitObject(0)))

    ' Read barcode directly from byte array
    Dim results = BarcodeReader.Read(imageByteData)

    Return $"{DateTime.Now}: Barcode is ({results.First().Value})"
End Function
$vbLabelText   $csharpLabel

Bu yaklaşım, virgülle bölerek ve gerçek base64 yükünü alarak hem ham base64 hem de veri URI biçimlerini (ör. data:image/png;base64,...) işler. Bu deseni kullanarak tam bir Blazor uygulaması için Blazor entegrasyon kılavuzunu inceleyin.

Sunucuda Barkod Üretimi

IronBarcode, sunucu tarafında da BarCode'lar oluşturabilir. BarcodeWriter.CreateBarcode ile aynı uygulamaya bir oluşturma uç noktası eklemek çok basittir:

public IActionResult OnPostGenerate()
{
    var barcode = BarcodeWriter.CreateBarcode(
        "https://ironsoftware.com", BarcodeEncoding.QRCode);
    byte[] barcodeBytes = barcode.ToPngBinaryData();

    return File(barcodeBytes, "image/png", "generated-barcode.png");
}
public IActionResult OnPostGenerate()
{
    var barcode = BarcodeWriter.CreateBarcode(
        "https://ironsoftware.com", BarcodeEncoding.QRCode);
    byte[] barcodeBytes = barcode.ToPngBinaryData();

    return File(barcodeBytes, "image/png", "generated-barcode.png");
}
Public Function OnPostGenerate() As IActionResult
    Dim barcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeEncoding.QRCode)
    Dim barcodeBytes As Byte() = barcode.ToPngBinaryData()

    Return File(barcodeBytes, "image/png", "generated-barcode.png")
End Function
$vbLabelText   $csharpLabel

Üretilen barkod, bir dosya indirimi olarak döndürülür. Aşağıdaki görüntü, OnPostGenerate işleyicisi tarafından üretilen QR kodu çıktısını göstermektedir:

ASP.NET Core Barcode Scanner - Server-generated QR code output

BarcodeWriter.CreateBarcode ile sunucu tarafında üretilen QR kod

Daha fazla barkod üretim seçeneği için barkod resmi üretim kılavuzuna ve barkod stilini özelleştirme kılavuzuna bakın.

Uygulamayı Çalıştırma

Projeyi Visual Studio'dan veya komut satırından çalıştırın:

dotnet run
dotnet run
SHELL

Uygulama, launchSettings.json içinde belirtilen bağlantı noktasında (genellikle https://localhost:5001 veya benzeri) başlar. Barkod tarayıcı arabirimini görmek için ana sayfaya gidin.

Sonuç

Bu makalede, ASP.NET Core Razor Pages ve IronBarcode kullanarak sunucu tarafı bir barkod tarayıcısı nasıl oluşturulacağını gösterildi. Aynı yaklaşım, ASP.NET Core MVC denetleyicileri, Web API uç noktaları ve Blazor Sunucu uygulamaları ile de çalışır, sadece görüntü verilerinin nasıl alındığını adapte etmeniz gerekir. IronBarcode, resim işlemlerini dahili olarak yönetir, bu nedenle entegrasyon, web çerçevesi ne olursa olsun minimal kod gerektirir.

Diğer .NET platformlarında barkod okuma için .NET MAUI barkod tarayıcı kılavuzuna ve barkod okuma nasıl yapılır kılavuzlarına bakın. IronBarcode ile ilgili daha fazla öğretici için barkod okuma öğreticisine gidin.

To get started quickly, download the complete BarcodeWebApp project and run it with dotnet run.

IronBarcode, geliştirme ve ticari kullanım için lisanslanmalıdır. Lisanslama detayları burada bulunmaktadır.

Sıkça Sorulan Sorular

ASP.NET Core kullanarak Razor Pages'da bir barkod tarayıcı nasıl uygulayabilirim?

IronBarcode'u ASP.NET Core Razor Pages projenizde bir barkod tarayıcı uygulamak için kullanabilirsiniz. Kütüphane, QR Kodları, Code 128 ve Code 39 gibi çeşitli barkod formatlarını okuyabilmenizi sağlar, görüntüleri yükleyip, BarcodeReader.Read ile işlemek mümkündür.

IronBarcode ile hangi tür barkodları okuyabilirim?

IronBarcode, QR Kodları, Code 128 ve Code 39 gibi çeşitli barkod formatlarını okumayı destekler, bu da onu çeşitli uygulamalar için çok yönlü hale getirir.

ASP.NET Core projesinde barkod tarama için görüntüleri nasıl yüklerim?

ASP.NET Core projesinde, görüntüleri IFormFile kullanarak yükleyebilirsiniz. IronBarcode bu görüntüleri işleyerek içerdikleri barkodları okur.

IronBarcode, ASP.NET Core'da sunucu tarafında barkod üretebilir mi?

Evet, IronBarcode, BarcodeWriter.CreateBarcode yöntemi kullanarak ASP.NET Core'da sunucu tarafında barkodlar üretebilir, böylece dinamik olarak barkod oluşturup göstermek mümkündür.

BarcodeReader.Read yöntemi ne için kullanılır?

IronBarcode'da BarcodeReader.Read yöntemi, görüntülerden barkodları çözmek için kullanılır, ASP.NET Core'da bir barkod tarayıcı uygulamanın bir parçası olarak temel bir rol oynar.

ASP.NET Core'da aynı kütüphane ile hem QR Kodları hem de barkodlar taranabilir mi?

Evet, IronBarcode, aynı ASP.NET Core uygulaması içinde hem QR Kodlarını hem de çeşitli diğer barkod formatlarını taramanıza olanak tanır ve birleştirilmiş bir çözüm sunar.

C# içinde barkod tarama için IronBarcode kullanmanın faydaları nelerdir?

IronBarcode, kolay entegrasyon, birden fazla barkod formatı desteği ve sağlam sunucu tarafı barkod oluşturma yetenekleri sunar, bu da onu C# uygulamalarında barkod tarama için verimli bir seçenek haline getirir.

IronBarcode hem 1D hem de 2D barkodları işleyebilir mi?

IronBarcode, basit ürün etiketlemeden karmaşık veri kodlamaya kadar geniş bir yelpazede uygulamayı destekleyen hem 1D hem de 2D barkodları işleyebilir.

IronBarcode'un ticari kullanımı için lisans seçenekleri var mı?

Iron Software, IronBarcode için ticari lisanslar dahil olmak üzere çeşitli lisanslama seçenekleri sunar, işletme gereksinimleri ile uyum sağlanmasını garanti eder.

IronBarcode, barkodların toplu işlenmesini destekliyor mu?

Evet, IronBarcode toplu işlemeyi destekler, bu da geliştiricilerin büyük ölçekli uygulamalar için verimliliği artırarak tek bir işlemde birden fazla barkod oluşturmasını veya okumasını sağlar.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,240,258 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.