How to Read QR Codes from Images in C

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

IronQR, geliştiricilerin IronDrawing ile görüntüleri yükleyerek, QrImageInput nesnesi oluşturarak ve BarcodeReader.Read yöntemini kullanarak QR verilerini verimli bir şekilde çözerek C#'da çeşitli görüntü formatlarından QR kodlarını okumasına olanak tanır.

Hızlı Başlangıç: C# İçinde Görüntüden QR Kodu Oku

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

IronQR, çeşitli görüntü formatlarından QR kodlarını okumak için yerleşik destek sağlar. Bu özellik, farklı medya türlerinde doğru kod çözmeyi sağlamak için ileri makine öğrenimi modellerini kullanır. Desteklenen formatlar şunları içerir:

  • Birleşik Fotoğraf Uzmanları Grubu (JPEG)
  • Taşınabilir Ağ Grafikleri (PNG)
  • Grafik Değişim Formatı (GIF)
  • İşaretlenmiş Görüntü Dosyası Formatı (TIFF)
  • Bitmap Resim Dosyası (BMP)
  • WBMP
  • WebP
  • Simge (ico)
  • WMF
  • RawFormat (ham)

Bu format desteği, görüntü işleme işlemlerini verimli bir şekilde yürüten açık kaynak kütüphanelerden IronDrawing tarafından sağlanmıştır. QR kodlarını dijital kameralar, tarayıcılar, mobil cihazlar veya web indirmelerinden format dönüştürmeden işleyebilirsiniz.

Görüntü tarama testi için konumlandırma kareleri ve veri modüllerini gösteren net siyah-beyaz desenli örnek QR kodu
  1. IronQR aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronQR
  2. Bu kod parçacığını kopyalayın ve ç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 için dağıtım yapın

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

    arrow pointer

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

Örnek görüntülerdeki QR kodu değeri hakkında merak mı ediyorsunuz? Kod parçasını kullanarak deneyin!

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

QR kodu okuma, bir QR kodu içinde saklanan bilgilerin taranması ve kodunun çözülmesi anlamına gelir. Bu genellikle QR kodunun verilerini yorumlayabilen bir yazılımla eşleştirilmiş bir kamera veya tarayıcı kullanılarak yapılır. Bir QR kodundaki bilgiler metin, URL, iletişim detayları veya diğer veri türleri olabilir.

IronQR'nin çok formatlı desteği, QR kodlarının farklı bağlamlar içinde yer aldığı gerçek dünya uygulamaları için gereklidir—pazarlama materyallerinden ürün ambalajlarına, dijital belgelere ve web içeriğine kadar. Çeşitli formatları destekleyerek IronQR, geliştiricilerin görüntü format uyumluluğunu dert etmeden sağlam uygulamalar oluşturmasını sağlar. IronQR'nin okuma yetenekleri hakkında daha fazla bilgi edinin ve bu esnekliğin geliştirme iş akışınızı nasıl iyileştirdiğini anlayın.

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

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

  • PNG: Şeffaflık gerektiren veya görüntü kalitesinin önemli olduğu QR kodları için en iyisi. PNG'nin kayıpsız sıkıştırması, QR kodu desenlerinin net ve okunabilir kalmasını sağlar.
  • JPEG: QR kodları içeren fotoğraflar veya dosya boyutu bir endişeyse idealdir. Okunabilirliği etkileyen sıkıştırma hatalarından kaçınmak için daha yüksek kaliteli ayarları (%%80+) kullanın.
  • TIFF: Arşivleme amacıyla veya kurumsal ortamlarda taranan belgelerle çalışırken mükemmeldir.
  • WebP: Mükemmel kalite korunmasına rağmen modern format, web uygulamaları için idealdir.

Herhangi bir formatla en iyi sonuçlar için, baskıda en az 300 DPI çözünürlükte ve kontrastta resimler sağlamalısınız. Format bazlı optimizasyon teknikleri için ileri düzey QR okuma örneklerimize göz atın.

Görüntü Kalitesi Düşükse Ne Olur?

IronQR, kusurlu görüntüleri işlemek için hata toleransı özelliklerini içerir. Düşük kaliteli görüntülerle çalışırken, kütüphane çeşitli stratejilere başvurur:

  1. Hata Düzeltme: QR kodları hata düzeltme yeteneklerine (L, M, Q, H seviyeleri) sahiptir, bu da kodun %30'una kadar zarar gördüğünde verilerin kurtarılmasına olanak tanır.
  2. Makine Öğrenimi İyileştirmesi: IronQR'nin ML modelleri bulanıklık, bozulma ve kötü aydınlatma gibi yaygın sorunları algılar ve telafi eder.
  3. Ön İşleme: Otomatik görüntü geliştirme, kod çözme girişimlerinden önce kontrastı ve keskinliği iyileştirir.

Özel QR okuma modu seçeneklerini kullanarak zorlu senaryolar için okuma sürecini hassas ayar yapmayı 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

Bir QR Kodundan Değerleri Çekme

Çoğu IronQR fonksiyonu, birden fazla tespiti desteklemek için bir koleksiyon döndürür. results bir nesne dizisi olduğundan, kendisinde Value özelliği bulunmaz. Örnek kod, koleksiyondan özellikle ilk QrResult öğesini seçer ve Value öğesini 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

Bir Görüntüde QR Kodunun Yerini Algılama

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

Örnekte, tespit edilen QR kodunun tüm dört noktasının koordinatları alınır ve konsola yazdırılır.

Lütfen dikkate alınBu işlev tarafından döndürülen 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

Girdi QR Kodu

QR kodu

Çıktı

Sistemin, her QR kodu köşesinin tam mekânsal koordinatlarını konsola kaydettiğine dikkat edin.

Kenar Algılama QR

Desteklenen QR Kod Türleri

Hem oluşturma hem de okuma için birçok türde QR kodu desteklenir. IronQR, çeşitli uygulama ihtiyaçlarını karşılamak için çeşitli QR kodu formatları için kapsamlı destek sunar. Dokümanlarımıza desteklenen QR formatları hakkında daha fazla bilgi edinin. Aşağıda desteklenen QR kodu türleri bulunmaktadır:

  • QRCode: Günümüzde en yaygın olarak kullanılan standart QR kodu. Web sitesi URL'leri, iletişim bilgileri ve diğer uygulamalar için uygun olan 7.089 sayısal karakter veya 4.296 alfanümerik karakter depolayabilir.
Görüntü tarama testi için konumlandırma kareleri ve veri modüllerini gösteren net siyah-beyaz desenli örnek QR kodu
  • MicroQRCode: Sınırlı alanlar için tasarlanmış, standart QR kodunun daha küçük bir versiyonu. Küçük ambalajlar veya küçük basılı etiketler için ideal olan 35 sayısal karakter veya 21 alfanümerik karakter depolayabilir.
Tipik QR kodu yapısını gösteren bulma desenleri ve veri modülleriyle standart QR kodu
  • RMQRCode:RMQRKodu (Dikdörtgen Mikro QR Kodu), kare yerine kompakt bir dikdörtgen versiyondur. Bu versiyon, dikdörtgen alanın mevcut olduğu uygulamalar için biçim oranında esneklik sağlar.
Standart konum işaretleri ve veri desenleriyle kare olmayan format gösterimi olan dikdörtgen QR kodu örneği

Doğru QR Kod Türünü Nasıl Seçerim?

Uygun QR kodu türünü seçmek, özel kullanım durumunuza ve kısıtlamalara bağlıdır:

  • Standart QR Kodu: Genel amaçlı uygulamalar için alan sınırsız olduğunda ve maksimum veri kapasitesine ihtiyaç duyulduğunda bunu seçin. URL'ler, WiFi kimlik bilgileri, vCard bağlantıları veya ayrıntılı ürün bilgileri için mükemmeldir. Uygulama detayları için QR kodu üretme örneklerimize 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ı kapasitesine rağmen, seri numaraları, basit URL'ler veya temel izleme kodları için mükemmeldir.

  • RMQR Kodu: Silindirik ürünlerdeki dar etiketler veya paketleme kenarlarındaki uzatılmış alanlar gibi özel boyutsal kısıtlamalara sahip olduğunda dikdörtgen kodları seçin.

Veri Depolama Sınırlamaları Nelerdir?

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

QR Kod Türü Sadece 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 depolama planlaması sırasında bu faktörleri dikkate alın:

  • Kullanılabilir alanı en üst düzeye çıkarmak için web bağlantıları için URL kısaltıcı kullanın
  • Büyük veri kümeleri için veri sıkıştırması 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 QR kodu üretme kılavuzumuza göz atın.

Micro veyaRMQRKodlarını Ne Zaman Kullanmalıyım?

Micro veRMQRkodları belirli senaryolar için mükemmeldir:

Micro QR Kodları: kullanmak için mükemmeldir

  • Bileşen takibi gerektiren elektronik devre kartları
  • Küçük tıbbi cihazlarla hasta veya ilaç tanımlayıcılarına ihtiyaç duyanlar
  • Sınırlı oyma alanı olan mücevher doğrulama
  • Üretimde minyatür ürün etiketleri

RMQR Kodları: için en iyi performansı gösterir

  • Tüpler veya borular üzerindeki dar nakliye etiketleri
  • Kalem silindirleri veya araçlar üzerindeki uzatılmış alanlar
  • Afiş tarzı pazarlama materyalleri
  • Mevcut dikdörtgen tasarım unsurlarına entegrasyon

Farklı QR kod türlerini okuma için pratik bir örnek:

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, platformunuza uygun paketi sağladığınızdan emin olmak için NuGet paketleri kılavuzumuzu inceleyin ve mevcut tüm yöntemler ve özelliklerin kapsamlı dökümantasyonu için API referansını kontrol edin.

Sıkça Sorulan Sorular

IronQR, QR kodlarını okumak için hangi görüntü formatlarını destekliyor?

IronQR, JPEG, PNG, GIF, TIFF, BMP, WBMP, WebP, ICO, WMF ve RawFormat dahil olmak üzere çeşitli görüntü formatlarından QR kodlarını okumayı destekler. Bu kapsamlı format desteği, QR kodlarını çeşitli kaynaklardan format dönüşümü olmadan işlemenize olanak tanıyan IronDrawing tarafından sağlanır.

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

IronQR'u kullanarak bir QR kodu okumak için, öncelikle görüntünüzü Image.FromFile() ile yükleyin, yüklenen görüntüden bir QrImageInput nesnesi oluşturun ve ardından QR verilerini çözümlemek için BarcodeReader.Read() kullanın. Yöntem, her tespit edilen QR kodunun bilgilerine erişmenize olanak tanıyan sonuçlar döndürür.

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

IronQR, farklı medya türleri ve görüntü formatlarında doğru QR kodu çözümlemeyi sağlamak için gelişmiş makine öğrenmesi modelleri kullanır. Bu yapay zeka destekli yaklaşım, zorlu görüntü koşullarında bile yüksek doğruluğu sürdürmeye yardımcı olur.

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

Evet, IronQR, tek bir görüntüden birden fazla QR kodunu tespit edip okuyabilir. BarcodeReader.Read yöntemi, foreach döngüsü kullanarak her tespit edilen QR kodunun verilerine erişmenizi sağlayan bir sonuçlar koleksiyonu döndürür.

IronQR'un okuduğu QR kodlarında hangi tür veriler saklanabilir?

IronQR, QR kodlarında saklanan düz metin, URL'ler, iletişim detayları ve diğer yapılandırılmış veri türlerini çözümleyebilir. Çözülen bilgi, her BarcodeResult nesnesinin Value özelliği aracılığıyla erişilebilir.

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 67,270 | 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 IronQR
bir örnek çalıştırın url'nizin bir QR koda dönüşmesini izleyin.