ASP.NET Core Barkod Tarayıcı
Giriş
ASP.NET Core, modern web uygulamaları oluşturmak için çapraz platform bir çerçevedir. Razor Pages modeli, HTTP isteklerini sayfa tabanlı bir yaklaşımla ele alır ve bu, sunucu tarafı barkod işleme için iyi bir seçim olan modeldir. 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 yazmadan doğrudan barkod okuyucuya iletilebilir.
Bu makale, yüklenen görüntülerden barkodlar ve QR kodları taramak için ASP.NET Core Razor Pages uygulamasına IronBarcode'un nasıl entegre edileceğini ve sunucudan barkodların nasıl üretileceğini anlatmaktadır.
ASP.NET Core'da Barkodları Okuma ve Tarama
- Barkodları okumak ve taramak için C# kütüphanesini yükleyin
- Yeni bir ASP.NET Core Razor Pages projesi oluşturun
- Barkod görüntülerini kabul edecek bir dosya yükleme formu tasarlayın
- Yüklenen görüntüyü barkod için taramak için
Readyöntemini kullanın - Sayfada kod çözülmüş barkod değerini göster
IronBarcode: C# Barkod Kütüphanesi
IronBarcode, .NET uygulamalarında barkodları okumak ve yazmak için sağlam bir API sağlar. Kutuphanesi, görüntü işleme işini dahili olarak halleder, bu nedenle geliştiriciler BarcodeReader.Read yöntemine ham baytlar, dosya yolları veya akışlar doğrudan geçirebilir, ayrı görüntü işleme kutuphanelerine ihtiyaç duymaz. Bu birçok barkod formatı destekler, bunlar arasında QR Code, Code 128, Code 39, PDF417, EAN ve daha fazlası bulunur.
Web uygulamaları için IronBarcode özellikle yararlıdır çünkü görüntüleri tamamen bellekte işler. Yüklenen dosyaların asla diske kaydedilmesine gerek yoktur, bu da dağıtımı basitleştirir ve temizlik yüklerini azaltır. Aynı kutuphane ayrıca BarcodeWriter.CreateBarcode ile barkodlar oluşturur ve hem okuma hem de yazma için tek bir bağımlılık haline gelir.
ASP.NET Core'da Bir Barkod Tarayıcı Oluşturmak İçin Adımlar
ASP.NET Core Razor Pages ve IronBarcode kullanarak web tabanlı bir barkod tarayıcı oluşturmak için bu adımları izleyin.
Önkoşullar
- Visual Studio 2022 veya daha sonraki bir sürümü (veya .NET desteği olan herhangi bir IDE)
- .NET 6.0 veya daha yeni SDK
Projeyi Oluştur
Yeni bir ASP.NET Core Web Uygulaması (Razor Pages) projesi oluşturun. Bu, Visual Studio'nun proje sihirbazı veya komut satırından yapılabilir:
dotnet new webapp -n BarcodeWebApp
dotnet new webapp -n BarcodeWebApp
IronBarcode Kütüphanesini Yükle
IronBarcode kütüphanesini NuGet Paket Yöneticisi Konsolu aracılığıyla yükleyin. Visual Studio'da Tools > NuGet Package Manager > Package Manager Console adresine gidin ve çalıştırın:
Install-Package BarCode
Alternatif olarak, komut satırından dotnet add package BarCode ile yükleyin. En son sürüm NuGet web sitesinde mevcuttur.
Ön Yüz
Ön yüz bir dosya yükleme formu ve sonuç gösterim alanından oluşur. Form, ikili dosya yüklemelerini yönetmek için enctype="multipart/form-data" kullanır. Barkod algılandığında, sonuç yüklenen görüntünün altında bir başarı uyarısı olarak görünür.
Index.cshtml dosyasının içeriğini aşağıdaki ile 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>
Yerleşim, zaten varsayılan ASP.NET Core szeması içindeki Bootstrap sınıflarını kullanır. Form, Upload sayfa işleyicisine gönderilir ve yüklenen görüntü önizlemesi, çözülmüş sonuç veya bir hata mesajı koşullu bloklarla gösterilir.
Örnek Giriş Barkodları
Aşağıdaki örnek barkodlar, tarayıcıyı test etmek için kullanılabilir. Her bir resim farklı bir format ve değeri kodlar:
"https://ironsoftware.com" kodlayan QR Kodu
"IRONBARCODE-2026" kodlayan Code 128 barkodu
"HELLO123" kodlayan Code 39 barkodu
IronBarcode ile Barkod Tarama
Sunucu tarafı mantık, yüklenen dosyayı OnPostUploadAsync yönteminde işler. Yüklenen IFormFile bir bayt dizisine okunur ve doğrudan BarcodeReader.Read yönteme geçilir. Bu, geçici dosyaların kaydedilmesini önler ve işleme tamamen bellekte kalır.
Index.cshtml.cs içeriğini 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
Yukarıdaki koddaki ana adımlar:
- Yüklemeyi al -
IFormFile,[BindProperty]ile bağlanır ve POST işleyicisinde alınır. - Baytlara dönüştür - Dosya bir
MemoryStreamkopyalanır ve bir bayt dizisine dönüştürülür. Bu, web tarayıcı örneğinde kullanılan aynı yaklaşımdır, base64 dizeleri yerine ASP.NET Core'unIFormFileiçin uyarlanmıştır. - Barkodu oku -
BarcodeReader.Read(imageBytes)görüntüyü işler ve tüm tespit edilen barkodları döndürür. - Sonucu göster - Tüm algılanan barkod değerleri birleştirilir ve UI'da gösterilir.
Aşağıdaki GIF, bir barkod görüntüsü yükleyip kod çözme sonucunu gösteren barkod okuyucunun çalışmasını göstermektedir:
ASP.NET Core uygulamasında yüklenen bir görseli tarayan barkod okuyucu
Base64 Görsel Verisinin İşlenmesi
Görüntü verilerini base64 dizeleri olarak alan uygulamalar için (örneğin web kamerası çekimleri veya JavaScript tuvali), aynı BarcodeReader.Read yöntemi base64'ten çözülen bayt dizileri ile çalışır. Bu desen, AJAX üzerinden görüntü verilerini gönderen tek sayfa uygulamalarında 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
Bu yaklaşım, virgülle ayırarak ve gerçek base64 yükünü alarak hem ham base64 hem de veri URI formatlarını (örneğin, data:image/png;base64,...) işler. Bu model kullanan tam bir Blazor uygulaması için, Blazor entegrasyon rehberine bakın.
Sunucuda Barkod Üretme
IronBarcode sunucu tarafında da barkodlar oluşturabilir. Aynı uygulamaya bir oluşturma uç noktası eklemek BarcodeWriter.CreateBarcode ile kolaydır:
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
Üretilen barkod bir dosya indirme olarak döndürüldü. Aşağıdaki resim, OnPostGenerate işleyicisi tarafından üretilen QR kodu çıktısını göstermektedir:
BarcodeWriter.CreateBarcode ile sunucu tarafında üretilen QR kodu
Daha fazla barkod üretim seçeneği için, barkod görsel üretim rehberine ve barkod stil rehberine bakın.
Uygulamayı Çalıştırma
Projeyi Visual Studio veya komut satırından çalıştırın:
dotnet run
dotnet run
Uygulama launchSettings.json'da belirtilen portta başlar (genellikle https://localhost:5001 veya benzeri). Barkod tarayıcı arayüzünü görmek için ana sayfaya gidin.
Sonuç
Bu makale, ASP.NET Core Razor Pages ve IronBarcode kullanarak sunucu tarafı bir barkod tarayıcı oluşturmanın nasıl yapılacağını gösterdi. Aynı yaklaşım, ASP.NET Core MVC denetleyicileri, Web API uç nok calmaları ve Blazor Sunucu uygulamaları ile çalışır, burada görsel verilerin nasıl alındığını adapte eder. IronBarcode, görüntü işlemesini dahili olarak ele alır, bu nedenle entegrasyon, web çerçevesi ne olursa olsun minimalist kod gerektirir.
.NET'in diğer platformlarında barkodları okumak için, .NET MAUI barkod tarayıcı öğreticisine ve barkod okuma rehberine bakın. IronBarcode hakkında daha fazla öğretici için, barkod okuma öğreticisini inceleyin.
To get started quickly, download the complete BarcodeWebApp project and run it with dotnet run.
IronBarcode'un geliştirme ve ticari kullanım için lisanslanması gerekir. Lisanslama detayları burada mevcuttur.
Sıkça Sorulan Sorular
Razor Pages kullanarak ASP.NET Core'da bir barkod tarayıcı nasıl uygulayabilirim?
ASP.NET Core Razor Pages projenizde IronBarcode'u kullanarak bir barkod tarayıcı uygulayabilirsiniz. Kütüphane, QR Kodları, Code 128 ve Code 39 gibi çeşitli barkod formatlarını görüntü yükleyip BarcodeReader.Read ile işleyerek okumanıza olanak tanır.
IronBarcode kullanarak hangi barkod türleri okunabilir?
IronBarcode, QR Kodları, Code 128 ve Code 39 gibi birden fazla barkod formatını okuma desteği sağlar, bu da onu çeşitli uygulamalar için çok yönlü kılar.
ASP.NET Core projesinde barkod tarama için resimleri nasıl yüklerim?
ASP.NET Core projesinde, IFormFile kullanarak resimleri yükleyebilirsiniz. IronBarcode, içinde bulunan barkodları okumak için bu resimleri işler.
IronBarcode ASP.NET Core'da sunucu tarafında barkod üretebilir mi?
Evet, IronBarcode ASP.NET Core'da BarcodeWriter.CreateBarcode yöntemi ile sunucu tarafında barkod üretebilir, böylece dinamik olarak barkod oluşturmayı ve görüntülemeyi sağlar.
BarcodeReader.Read yöntemi ne için kullanılır?
IronBarcode'daki BarcodeReader.Read yöntemi, resimlerden barkod çözmek için kullanılır ve ASP.NET Core'da bir barkod tarayıcı uygulamak için hayati bir parçadır.
ASP.NET Core'da aynı kitaplıkla hem QR Kodlarını hem de barkodları taramak mümkün mü?
Evet, IronBarcode, tek bir ASP.NET Core uygulamasında hem QR Kodlarını hem de çeşitli diğer barkod formatlarını taramanıza olanak tanır, birleşik bir çözüm sunar.
C#'ta barkod taraması 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 taraması için verimli bir seçenek haline getirir.

