Blazor'da Bir QR Kod Tarayıcı Nasıl Oluşturulur

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

Blazor Server, C#'ı sunucuda çalıştıran ve UI güncellemelerini SignalR bağlantısı üzerinden tarayıcıya ileten bir .NET web çerçevesidir. IronQR, Blazor Server'a doğrudan entegre olur, tarayıcıdan yüklenen görüntüler için sunucu tarafında QR kodu taramasına olanak tanır ve JavaScript gerektirmez.

Bu kullanım kılavuzunda, bir görüntü yüklemeyi kabul eden ve İçindeki gömülü QR kodunu IronQR kullanarak çözen bir Blazor Server sayfası oluşturacağız.

Gereksinimler

  1. ASP.NET ve web geliştirme iş yükü yüklü Visual Studio 2022
  2. .NET 8 veya üstünü hedefleyen bir Blazor Server projesi

IronQR Kurulumu

IronQR kütüphanesini Visual Studio'daki NuGet Paket Yöneticisi Konsolu'nu kullanarak yükleyin. Şuraya gidin Tools > NuGet Package Manager > Package Manager Console ve çalıştırın:

Install-Package IronQR

Alternatif olarak, NuGet üzerinde IronQR arayın ve en son sürümü yükleyin.

Blazor Bileşen Düzeni

Tarayıcı UI, tarayıcıya özgü dosya seçimi için Blazor'un yerleşik InputFile bileşenini, taramayı başlatmak için bir düğme ve çözümlenmiş sonucu göstermek için bir paragraf kullanır. JavaScript arayüzü gerekmez.

Aşağıdaki işaretleme ile yeni bir Razor bileşeni Scanner.razor ekleyin:

@page "/scanner"
@using IronQr
@using IronSoftware.Drawing

<h3>QR Code Scanner</h3>

<InputFile OnChange="OnFileSelected" accept="image/*" />

<br /><br />

<button @onclick="ScanQRCode" disabled="@(qrImageSrc == null)">Scan QR Code</button>

<p>Result: @scannedText</p>

Örnek Giriş

Aşağıdaki QR kodunu test görüntüsü olarak kullanın. Cihazınıza kaydedin, uygulamadaki dosya seçimci ile yükleyin, ardından QR Kodunu Tara'ya tıklayın. Çözümlenmiş değer https://ironsoftware.com olarak gösterilmelidir.

Blazor QR tarayıcısını test etmek için https://ironsoftware.com adresini kodlayan örnek QR kodu

Örnek QR kodu — https://ironsoftware.com kodlar

IronQR ile QR Kod Tarama

Bir dosya seçildiğinde, OnFileSelected tarayıcı yüklemesini sunucudaki geçici bir dosyaya akıtır. Tarama düğmesine tıklandığında, ScanQRCode dosyayı bir AnyBitmap içinde yükler, onu QrReader.Read() geçirir ve ilk çözümlenmiş değeri scannedText yazar, bu da Blazor tarafından otomatik olarak bileşende render edilir.

Aşağıdaki @code bloğunu Scanner.razor ekleyin:

:path=/static-assets/qr/content-code-examples/how-to/blazor-qr-code-scanner.cs
using IronQr;
using IronSoftware.Drawing;

private string? qrImageSrc;
private string scannedText = string.Empty;

private async Task OnFileSelected(InputFileChangeEventArgs e)
{
    var file = e.File;
    var tempPath = Path.Combine(Path.GetTempPath(), file.Name);
    await using var stream = file.OpenReadStream(maxAllowedSize: 10_000_000);
    await using var fs = File.Create(tempPath);
    await stream.CopyToAsync(fs);
    qrImageSrc = tempPath;
}

private async Task ScanQRCode()
{
    // Load the scanned QR code
    var inputBmp = AnyBitmap.FromFile(qrImageSrc!);
    var imageInput = new QrImageInput(inputBmp);
    var reader = new QrReader();

    // Read the scanned QR code
    var results = reader.Read(imageInput);

    // Check if a result was found
    var firstResult = results.FirstOrDefault();
    if (firstResult != null)
    {
        // Save the QR code value as a string
        scannedText = firstResult.Value;
    }
    else
    {
        scannedText = "No QR code found in the selected image.";
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System.IO
Imports Microsoft.AspNetCore.Components.Forms
Imports System.Threading.Tasks

Private qrImageSrc As String = Nothing
Private scannedText As String = String.Empty

Private Async Function OnFileSelected(e As InputFileChangeEventArgs) As Task
    Dim file = e.File
    Dim tempPath = Path.Combine(Path.GetTempPath(), file.Name)
    Await Using stream = file.OpenReadStream(maxAllowedSize:=10000000)
        Await Using fs = File.Create(tempPath)
            Await stream.CopyToAsync(fs)
        End Using
    End Using
    qrImageSrc = tempPath
End Function

Private Async Function ScanQRCode() As Task
    ' Load the scanned QR code
    Dim inputBmp = AnyBitmap.FromFile(qrImageSrc)
    Dim imageInput = New QrImageInput(inputBmp)
    Dim reader = New QrReader()

    ' Read the scanned QR code
    Dim results = reader.Read(imageInput)

    ' Check if a result was found
    Dim firstResult = results.FirstOrDefault()
    If firstResult IsNot Nothing Then
        ' Save the QR code value as a string
        scannedText = firstResult.Value
    Else
        scannedText = "No QR code found in the selected image."
    End If
End Function
$vbLabelText   $csharpLabel

InputFile.OpenReadStream yüklenen baytları doğrudan sunucu tarafı geçici bir dosyaya akıtır. AnyBitmap.FromFile görüntü formatını çözer ve QrReader.Read bulunan her bir QR kodu için bir girişle bir IEnumerable<QrResult> döndürür. FirstOrDefault bir istisna atmadan, QR kodu olmayan görüntüleri güvenli bir şekilde işler.

Çıktı

Bir QR kodu görüntüsü seçildikten ve QR Kodunu Tara'ya tıklandıktan sonra, çözülen değer aşağıdaki sonuç paragrafında kontrol ögelerinin altında görüntülenir.

IronQR kullanan Blazor QR Kod Tarayıcı — çözümlenen sonuç sayfada gösteriliyor

Çözülen QR kodu değeri Blazor bileşeninde görüntülendi

Projeyi İndir

Tam BlazorQrScanner projesini indirmek için buraya tıklayın.

Sonuç

IronQR, herhangi bir JavaScript olmadan bir Blazor Server uygulamasına entegre olur. InputFile tarayıcıya özgü dosya seçimi sağlar ve QrReader.Read çözümlenmeyi tamamen sunucuda ele alır. Aynı desen, FirstOrDefault çağırmak yerine tam sonuçlar koleksiyon üzerinde iterasyon yaparak, görüntü başına birden fazla QR kodu taramak için ölçeklenir.

QR kodlarını okuma ve mevcut tarama modları hakkında daha fazla bilgi için Görüntüden QR Kodları Okuma ve Tarama Modlarıyla QR Kodları Okuma kılavuzlarına bakın.

Sıkça Sorulan Sorular

IronQR'nin bir Blazor Sunucu uygulamasındaki temel kullanımı nedir?

IronQR, öncelikle tarayıcı aracılığıyla yüklenen görüntülerden sunucu taraflı QR kodu taramayı etkinleştirmek amacıyla Blazor Sunucu uygulamalarında kullanılır, JavaScript gerektirmez.

Blazor projesinde IronQR kütüphanesi nasıl kurulur?

Blazor projesinde IronQR kütüphanesini kurmak için Visual Studio'daki NuGet Paket Yöneticisi Konsolunu kullanarak yükleme komutunu çalıştırın veya NuGet üzerinde 'IronQR' araması yaparak en son sürümü yükleyin.

QR kodu taraması için Blazor'da hangi bileşen kullanılır?

`InputFile` bileşeni, kullanıcıların tarayıcıdan görüntü seçmesine olanak tanıyan ve QR kodu taraması için Blazor'da görüntü yüklemelerinin işlenmesini sağlayan bileşendir.

IronQR, Blazor uygulamasında QR kodlarını nasıl çözer?

Blazor uygulamasında, IronQR seçilen görüntüyü bir `AnyBitmap` içine yükler ve ardından `QrReader.Read()` kullanarak QR kodunun verilerini çıkarır ve görüntüler.

IronQR, birden fazla QR kodu içeren görüntüleri işleyebilir mi?

Evet, IronQR, `QrReader.Read()` tarafından döndürülen `IEnumerable` koleksiyonu üzerinden yineleme yaparak birden fazla QR kodu içeren görüntüleri işleyebilir.

Blazor'da IronQR ile QR kodu taraması uygulamak için JavaScript'e ihtiyaç var mı?

Hayır, QR kodu taraması uygulamak için Blazor'da IronQR ile JavaScript'e ihtiyaç yoktur, çünkü tüm süreç sunucu tarafında işlenir.

`AnyBitmap`in IronQR tarama sürecindeki rolü nedir?

`AnyBitmap`, yüklenen dosyanın görüntü formatını çözmek ve IronQR ile QR kodu okumaya hazırlamak için kullanılır.

Blazor, QR kodu taramasının sonucunu nasıl görüntüler?

Blazor, bir paragraf elemanı içinde bileşenin arayüzünde çözülmüş değeri render ederek QR kodu taramasının sonucunu görüntüler.

Blazor tarayıcısına QR kodu olmayan bir görüntü yüklenirse ne olur?

Eğer QR kodu içermeyen bir görüntü yüklenirse, `QrReader.Read()` tarafından döndürülen `IEnumerable` üzerinde `FirstOrDefault` çağrıldığında bu durum güvenli bir şekilde yönetilir ve bir istisna atılmaz.

Tam Blazor QR Tarayıcısı projesini indirmek mümkün mü?

Evet, kılavuzun web sayfasında verilen bağlantıdan tam Blazor QR Tarayıcı projesini indirebilirsiniz.

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 70,814 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronQR
bir örnek çalıştırın url'nizin bir QR koda dönüşmesini izleyin.