C# ile Görüntülerden QR Kodları Nasıl Okunur

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

IronQR, IronDrawing ile görüntüleri yükleyerek, QrImageInput nesnesi oluşturarak ve QR verilerini verimli bir şekilde çözmek için BarcodeReader.Read yöntemini kullanarak geliştiricilerin çeşitli görüntü formatlarından QR kodları okumalarını sağlar.

Hızlı Başlangıç: C#'da Görüntüden QR Kodunu Okuyun

Farklı Görüntü Formatlarından QR Kodlarını Nasıl Okurum?

IronQR, çeşitli görüntü formatlarından QR kodlarını okumak için yerleşik destek sağlar. Bu işlevsellik, farklı medya türlerinde doğru çözümlemeyi sağlamak için ileri düzey makine öğrenim modellerini kullanır. Desteklenen formatlar arasında şunlar bulunur:

  • Ortak Fotoğraf Uzmanları Grubu (JPEG)
  • Taşınabilir Ağ Grafikleri (PNG)
  • Grafik Değişim Biçimi (GIF)
  • Etiketli Görüntü Dosyası Formatı (TIFF)
  • Bitmap Görüntü Dosyası (BMP)
  • WBMP
  • WebP
  • İkon (ico)
  • WMF
  • HamFormat (raw)

Bu format desteği, görüntü işlemesini verimli bir şekilde gerçekleştiren açık kaynaklı kütüphane IronDrawing tarafından sağlanır. Dijital kameralar, tarayıcılar, mobil cihazlar veya web indirmeleri gibi kaynaklardan format dönüştürmeden QR kodları işleyebilirsiniz.

Görüntü taraması testi için konumlandırıcı kareler ve veri modülleri gösteren net siyah beyaz desenli örnek QR kod
  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronQR yükleyin

    PM > Install-Package IronQR
  2. Bu kod parçasını kopyalayıp çalıştırın.

    // Import necessary IronQR and IronDrawing namespaces
    using IronSoftware.Drawing; 
    using IronBarcode;
    
    public class QRCodeReader
    {
        public static void Main()
        {
            // Load an image from a file path
            using (var inputImage = Image.FromFile("path/to/your/image/file.webp"))
            {
                // Create a QrImageInput object from the image
                var qrImageInput = new QrImageInput(inputImage);
    
                // Decode the QR kodu from the image
                var result = BarcodeReader.Read(qrImageInput);
    
                // Iterate through each detected QR kodu and display its information
                foreach (var barcodeResult in result.Barcodes)
                {
                    Console.WriteLine($"QR Code Data: {barcodeResult.Value}");
                }
            }
        }
    }
  3. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronQR kullanmaya başlayın ücretsiz deneme ile

    arrow pointer

Not: "path/to/your/image/file.webp"'i QR kodu görüntü dosyanızın gerçek yolu ile değiştirin.

Örnek görüntülerdeki QR kodu değeri ile ilgileniyor musunuz? Kod parçasını kullanarak deneyin!

IronQR Neden Birden Fazla Görüntü Formatını Destekler?

Bir QR kodunu okumak, bir QR kodunda depolanan bilgileri tarama ve çözümleme işlemine atıfta bulunur. Bu tipik olarak bir QR kodunun verilerini yorumlayabilen yazılımla eşleştirilmiş bir kamera veya tarayıcı kullanılarak yapılır. Bir QR kodundaki bilgiler, metin, URL'ler, iletişim bilgileri veya diğer veri formları olabilir.

IronQR'nin çok formatlı desteği, QR kodlarının pazarlama materyalleri ve ürün ambalajından dijital belgeler ve web içeriğine kadar çeşitli bağlamlarda göründüğü gerçek dünya uygulamaları için gereklidir. Çeşitli formatları destekleyerek, IronQR geliştiricilerin görüntü formatı uyumluluğuyla ilgili endişe duymadan sağlam uygulamalar oluşturmasını sağlar. Bu esnekliğin geliştirme iş akışınızı nasıl geliştirdiğini anlamak için IronQR'nin okuma yetenekleri hakkında daha fazla bilgi edinin.

Her Görüntü Formatını Ne Zaman Kullanmalıyım?

Farklı görüntü formatları, QR kodu işlemede farklı amaçlara hizmet eder:

  • PNG: Şeffaflık gerektiren veya görüntü kalitesinin öncelikli olduğu QR kodları için en iyisidir. PNG'nin kayıpsız sıkıştırması, QR kodu desenlerinin keskin ve okunabilir kalmasını sağlar.
  • JPEG: QR kodu içeren fotoğraflar veya dosya boyutunun önemli olduğu durumlar için idealdir. Okunabilirliği etkileyen sıkıştırma hatalarını önlemek için yüksek kaliteli ayarlar (en az %80) kullanın.
  • TIFF: Arşivleme amacıyla veya kurumsal ortamlarda taranan belgelerle çalışırken mükemmeldir.
  • WebP: Mükemmel sıkıştırma ile kalite koruması sunan modern format, web uygulamaları için idealdir.

Her formatla en iyi sonuçları elde etmek için, görüntülerinizin yeterli çözünürlüğü (basılı QR kodları için en az 300 DPI) ve kontrastı koruduğundan emin olun. Formatla ilgili spesifik optimizasyon teknikleri için ileri QR okuma örneklerine göz atın.

Görüntü Kalitesi Zayıfsa Ne Olur?

IronQR, kusurlu görüntüleri işlemek için hata toleransı özellikleri içerir. Zayıf kaliteli görüntülerle başa çıkarken, kütüphane çeşitli stratejiler uygular:

  1. Hata Düzeltme: QR kodları hata düzeltme yetenekleri (L, M, Q, H seviyeleri) içerir, bu sayede kodun %30'u zarar görse bile veri kurtarılabilir.
  2. Makine Öğrenimi Geliştirmesi: IronQR'nin ML modelleri bulanıklık, bozulma ve kötü aydınlatma gibi yaygın sorunları tespit eder ve telafi eder.
  3. Ön İşleme: Otomatik görüntü iyileştirme, kodlama girişimlerinden önce kontrast ve netliği artırır.

Zorlu senaryolar için, okuma sürecine ince ayar yapmak için özel QR okuma modu seçeneklerini kullanmayı düşünün:

// Example: Reading QR kodus with enhanced error correction
using IronBarcode;

public class EnhancedQRReader
{
    public static void ReadPoorQualityImage()
    {
        // Configure reader with multiple attempts and error correction
        var options = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Detailed, // More thorough scanning
            ExpectMultipleBarcodes = true,  // Check for multiple codes
            ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QR kodus only
        };

        using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
        {
            var qrImageInput = new QrImageInput(inputImage);
            var results = BarcodeReader.Read(qrImageInput, options);

            foreach (var result in results.Barcodes)
            {
                Console.WriteLine($"Decoded: {result.Value}");
                Console.WriteLine($"Confidence: {result.Confidence}%");
            }
        }
    }
}
// Example: Reading QR kodus with enhanced error correction
using IronBarcode;

public class EnhancedQRReader
{
    public static void ReadPoorQualityImage()
    {
        // Configure reader with multiple attempts and error correction
        var options = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Detailed, // More thorough scanning
            ExpectMultipleBarcodes = true,  // Check for multiple codes
            ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QR kodus only
        };

        using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
        {
            var qrImageInput = new QrImageInput(inputImage);
            var results = BarcodeReader.Read(qrImageInput, options);

            foreach (var result in results.Barcodes)
            {
                Console.WriteLine($"Decoded: {result.Value}");
                Console.WriteLine($"Confidence: {result.Confidence}%");
            }
        }
    }
}
Imports IronBarcode

Public Class EnhancedQRReader
    Public Shared Sub ReadPoorQualityImage()
        ' Configure reader with multiple attempts and error correction
        Dim options As New BarcodeReaderOptions With {
            .Speed = ReadingSpeed.Detailed, ' More thorough scanning
            .ExpectMultipleBarcodes = True, ' Check for multiple codes
            .ExpectBarcodeTypes = BarcodeType.QRCode ' Focus on QR kodus only
        }

        Using inputImage = Image.FromFile("blurry_qr_code.jpg")
            Dim qrImageInput As New QrImageInput(inputImage)
            Dim results = BarcodeReader.Read(qrImageInput, options)

            For Each result In results.Barcodes
                Console.WriteLine($"Decoded: {result.Value}")
                Console.WriteLine($"Confidence: {result.Confidence}%")
            Next
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

QR Kodundan Değer Alma

Çoğu IronQR işlevi birden fazla algılamayı desteklemek için bir koleksiyon döndürür. results bir nesneler dizisi olduğundan, kendi başına bir Value özelliğine sahip değildir. Örnek kod, özellikle koleksiyondan ilk QrResult'i seçip değerini alır.

:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-value.cs
using System;
using System.Collections.Generic;
using System.Linq;
using IronQr;
using System.Drawing;

// Import image
var inputImage = Image.FromFile("sample.jpg");

// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputImage);

// Create a QR Reader object
QrReader reader = new QrReader();

// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);

// Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}");
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronQr
Imports System.Drawing

' Import image
Dim inputImage As Image = Image.FromFile("sample.jpg")

' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputImage)

' Create a QR Reader object
Dim reader As New QrReader()

' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

' Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}")
$vbLabelText   $csharpLabel

Görüntüde QR Kodunun Konumunu Algılama

IronQR, yalnızca basit kod çözmenin ötesine geçer ve bir QR kodunun görüntü içinde nerede bulunduğunu kesin olarak konumlandırır. Bu konumlandırma, PointF (0,0) koordinatının görüntünün sol üst köşesini temsil ettiği standart bir koordinat sistemi kullanır. QR kodunun köşelerinin tam mekansal koordinatları Points[] dizisi aracılığıyla erişilebilir.

Örnekte, algılanan QR kodunun dört noktasının koordinatları alınır ve konsola yazdırılır.

Lütfen dikkate alinBu fonksiyonun döndürdüğü koordinatlar, sıkı bir "zig-zag" sıralamasında saklanır: sol üst, sağ üst, sol alt ve son olarak sağ alt

:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-position.cs
using System;
using System.Collections.Generic;
using IronQr;
using System.Drawing;
using System.Linq;

// Import an image containing a QR code
var inputImage = Image.FromFile("urlQr.png");

// Load the asset into a QrImageInput object
var imageInput = new QrImageInput(inputImage);

// Create a QR Reader object
var reader = new QrReader();

// Read the input and get all embedded QR codes
IEnumerable<QrResult> results = reader.Read(imageInput);

// [TL, TR, BL, BR]
string[] labels = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" };

var points = results.First().Points;

for (int i = 0; i < points.Length; i++)
{
    Console.WriteLine($"{labels[i]}: {points[i].X}, {points[i].Y}");
}
Imports System
Imports System.Collections.Generic
Imports IronQr
Imports System.Drawing
Imports System.Linq

' Import an image containing a QR code
Dim inputImage As Image = Image.FromFile("urlQr.png")

' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)

' Create a QR Reader object
Dim reader As New QrReader()

' Read the input and get all embedded QR codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

' [TL, TR, BL, BR]
Dim labels As String() = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" }

Dim points = results.First().Points

For i As Integer = 0 To points.Length - 1
    Console.WriteLine($"{labels(i)}: {points(i).X}, {points(i).Y}")
Next
$vbLabelText   $csharpLabel

Giriş QR Kodu

QR kodu

Çıktı

Sistemin her QR kodu köşesinin tam uzamsal koordinatlarını konsola kaydettiğini fark edin.

Kenar Algılama QR

Desteklenen QR Kod Tipleri

Hem oluşturma hem de okuma için çeşitli QR kodu türleri desteklenmektedir. IronQR, çeşitli uygulama gereksinimlerini karşılamak için farklı QR kodu formatları için kapsamlı destek sağlar. Dokümantasyonumuzda desteklenen QR formatları hakkında daha fazla bilgi edinin. Aşağıda desteklenen QR kodu türleri bulunmaktadır:

  • QRCode: Bugün en yaygın kullanılan standart QR kodu. Bu, web sitesi URL'leri, iletişim bilgileri ve diğer uygulamalar için uygun hale getirerek 7.089 sayısal karakter veya 4.296 alfanümerik karakter saklayabilir.
Görüntü taraması testi için konumlandırıcı kareler ve veri modülleri gösteren net siyah beyaz desenli örnek QR kod
  • MicroQRCode: Sınırlı alan için tasarlanmış standart QR kodunun daha küçük bir versiyonu. Bu, küçük ambalajlar veya küçük baskılı etiketler için ideal olarak 35 sayısal karakter veya 21 alfanümerik karakter saklayabilir.
Bulucu desenler ve veri modülleriyle tipik QR kodu yapısını gösteren standart QR kodu
  • RMQRCode: RMQR Kodu (Dikdörtgen Mikro QR Kodu) kare yerine kompakt dikdörtgen bir versiyonudur. Bu versiyon, dikdörtgen alanın kullanılabilir olduğu uygulamalar için yararlı olması açısından en-boy oranında esneklik sağlar.
Dikdörtgen QR kodu örneği, kare olmayan formatı ve standart konumlandırma işaretleri ve veri desenleriyle gösteriyor.

Doğru QR Kod Tipini Nasıl Seçerim?

Bu QR kodu türünü seçmek, belirli kullanım senaryonuza ve kısıtlarınıza bağlıdır:

  • Standart QR Kodu: Alanın sınırlı olmadığı ve maksimum veri kapasitesine ihtiyaç duyduğunuz genel amaçlı uygulamalar için bunu tercih edin. URL'ler, WiFi kimlik bilgileri, vCard kişiler veya ayrıntılı ürün bilgileri için mükemmel. QR kodu üretim örneklerimiz aracılığıyla uygulama ayrıntılarına bakın.

  • Micro QR Kodu: Elektronik bileşenler, mücevher etiketleri veya tıbbi cihazlar gibi küçük yüzeylerle çalışırken idealdir. Sınırlı kapasiteye rağmen, seri numaraları, basit URL'ler veya temel izleme kodları için mükemmeldir.

  • RMQR Kodu: Mevcut alan belirli boyutsal kısıtlamalara sahipse, dikdörtgen kodları seçin, örneğin silindirik ürünlerin dar etiketleri veya paketleme kenarlarındaki uzunlamasına boşluklar.

Veri Depolama Kısıtlamaları Nelerdir?

Veri kapasitesini anlamak, QR kodu uygulamanızı optimize etmenize yardımcı olur:

QR Kodu Türü Yalnızca Sayısal Alfanümerik İkili Kanji
Standart QR 7.089 4.296 2.953 1.817
Mikro QR 35 21 15 9
RMQR Değişken Değişken Değişken Değişken

Veri depolamayı planlarken bu faktörleri göz önünde bulundurun:

  • Mevcut alanı en üst düzeye çıkarmak için web bağlantıları için URL kısaltıcılardan yararlanın
  • Büyük veri setleri için veri sıkıştırmayı uygulayın
  • Uygun hata düzeltme seviyelerini seçin (daha yüksek düzeltme kapasiteyi azaltır)

Gelişmiş uygulamalar için, estetiği veri kapasitesi ile dengelemek için özel stilize edilmiş QR kodu oluşturma kılavuzumuzu keşfedin.

Micro veya RMQR Kodlarını Ne Zaman Kullanmalıyım?

Micro ve RMQR kodları belirli senaryolarda mükemmeldir:

Micro QR Kodları şunlar için mükemmeldir:

  • Bileşen takibi gerektiren elektronik devre kartları
  • Hasta veya ilaç tanımlayıcılarına ihtiyaç duyan küçük tıbbi cihazlar
  • Sınırlı kazıma alanına sahip mücevher oturumları
  • Üretimdeki mini ürün etiketleri

RMQR Kodları şunlar için idealdir:

  • Tüpler veya borular üzerindeki dar nakliye etiketleri
  • Kalem varilleri veya aletler üzerindeki uzunlamasına alanlar
  • Afiş tarzı pazarlama materyalleri
  • Mevcut dikdörtgen tasarım öğelerine entegrasyon

Farklı QR kodu türlerini okumak için pratik bir örneğe buradan bakın:

using IronBarcode;
using IronSoftware.Drawing;

public class MultiTypeQRReader
{
    public static void ReadVariousQRTypes()
    {
        // Configure reader to handle all QR kodu types
        var options = new BarcodeReaderOptions
        {
            ExpectBarcodeTypes = BarcodeType.QRCode | 
                                BarcodeType.MicroQRCode | 
                                BarcodeType.RectangularMicroQRCode
        };

        string[] imagePaths = {
            "standard_qr.png",
            "micro_qr.png", 
            "rectangular_qr.png"
        };

        foreach (var path in imagePaths)
        {
            using (var image = Image.FromFile(path))
            {
                var qrInput = new QrImageInput(image);
                var results = BarcodeReader.Read(qrInput, options);

                foreach (var qr in results.Barcodes)
                {
                    Console.WriteLine($"Type: {qr.BarcodeType}");
                    Console.WriteLine($"Data: {qr.Value}");
                    Console.WriteLine($"Format: {qr.Format}");
                    Console.WriteLine("---");
                }
            }
        }
    }
}
using IronBarcode;
using IronSoftware.Drawing;

public class MultiTypeQRReader
{
    public static void ReadVariousQRTypes()
    {
        // Configure reader to handle all QR kodu types
        var options = new BarcodeReaderOptions
        {
            ExpectBarcodeTypes = BarcodeType.QRCode | 
                                BarcodeType.MicroQRCode | 
                                BarcodeType.RectangularMicroQRCode
        };

        string[] imagePaths = {
            "standard_qr.png",
            "micro_qr.png", 
            "rectangular_qr.png"
        };

        foreach (var path in imagePaths)
        {
            using (var image = Image.FromFile(path))
            {
                var qrInput = new QrImageInput(image);
                var results = BarcodeReader.Read(qrInput, options);

                foreach (var qr in results.Barcodes)
                {
                    Console.WriteLine($"Type: {qr.BarcodeType}");
                    Console.WriteLine($"Data: {qr.Value}");
                    Console.WriteLine($"Format: {qr.Format}");
                    Console.WriteLine("---");
                }
            }
        }
    }
}
Imports IronBarcode
Imports IronSoftware.Drawing

Public Class MultiTypeQRReader
    Public Shared Sub ReadVariousQRTypes()
        ' Configure reader to handle all QR kodu types
        Dim options As New BarcodeReaderOptions With {
            .ExpectBarcodeTypes = BarcodeType.QRCode Or
                                  BarcodeType.MicroQRCode Or
                                  BarcodeType.RectangularMicroQRCode
        }

        Dim imagePaths As String() = {
            "standard_qr.png",
            "micro_qr.png",
            "rectangular_qr.png"
        }

        For Each path In imagePaths
            Using image = Image.FromFile(path)
                Dim qrInput As New QrImageInput(image)
                Dim results = BarcodeReader.Read(qrInput, options)

                For Each qr In results.Barcodes
                    Console.WriteLine($"Type: {qr.BarcodeType}")
                    Console.WriteLine($"Data: {qr.Value}")
                    Console.WriteLine($"Format: {qr.Format}")
                    Console.WriteLine("---")
                Next
            End Using
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

Üretim dağıtımları için, doğru platform için doğru pakete sahip olduğunuzdan emin olmak için NuGet paketleri kılavuzumuzu inceleyin ve API referansı sayesinde tüm mevcut yöntemler ve özellikler hakkında kapsamlı belgeleri kontrol edin.

Sıkça Sorulan Sorular

IronQR, QR kod okumayı hangi görüntü formatlarını destekliyor?

IronQR, JPEG, PNG, GIF, TIFF, BMP, WBMP, WebP, ICO, WMF ve RawFormat dahil birçok görüntü formatından QR kod okuma yeteneğine sahiptir. Bu kapsamlı format desteği, QR kodlarını çeşitli kaynaklardan format dönüştürmeye gerek kalmadan işlemenizi sağlayan IronDrawing sayesinde mümkündür.

C#'ta bir görüntü dosyasından QR kodu nasıl okuyabilirim?

IronQR kullanarak QR kodu okumak için önce resminizi Image.FromFile()'yi kullanarak yükleyin; yüklenen görüntüden bir QrImageInput nesnesi oluşturun, ardından QR verilerini çözmek için BarcodeReader.Read()'i kullanın. Yöntem, her tespit edilen QR kodunun bilgilerine erişmenizi sağlayacak sonuçlar döndürür.

Farklı medya türlerinde doğru QR kodu okuma sağlayan teknoloji nedir?

IronQR, farklı medya türlerinde ve görüntü formatlarında doğru QR kodu çözümleme sağlamak için gelişmiş makine öğrenme modelleri kullanır. Bu AI tabanlı yaklaşım, zorlu görüntü koşullarında bile yüksek doğruluk sağlamaya yardımcı olur.

Tek bir görüntüden birden fazla QR kod okuyabilir miyim?

Evet, IronQR tek bir görüntüden birden fazla QR kodu tespit edip okuyabilir. BarcodeReader.Read metodu, tespit edilen her QR kodunu bir foreach döngüsü içinde dolaşıp bireysel QR kod verilerine erişmenizi sağlayan bir sonuçlar koleksiyonu döndürür.

IronQR'nin okuduğu QR kodlarda hangi tür veriler saklanabilir?

IronQR, düz metin, URL'ler, iletişim detayları ve diğer yapılandırılmış veri biçimleri dahil çeşitli QR kodlarına saklanmış verileri çözebilir. Çözülen bilgiler, her BarcodeResult nesnesinin Value özelliği aracılığıyla erişilebilir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 64,787 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronQR
bir örneği çalıştır URL'inin bir QR koduna dönüşünü izle.