How to Read QR Codes from Images in C
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
Görüntülerden QR Kodu Nasıl Okunur
- Görüntülerden QR kodlarını okumak için C# kütüphanesini indirin
- Resim verilerini
IronDrawingkullanarak içe aktarın. - Görüntü verisinden bir
QrImageInputnesnesi oluşturun - Nesneyi
Readyöntemine geçirin. - Tespit edilen her QR kodu boyunca yineleyin ve bilgilerini gözden geçirin
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.
-
IronQR aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package IronQR -
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}"); } } } } -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronQR kullanmaya başlayın
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:
- 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.
- 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.
- Ö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
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}")
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.
: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
Girdi QR Kodu
Çıktı
Sistemin, her QR kodu köşesinin tam mekânsal koordinatlarını konsola kaydettiğine dikkat edin.
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.
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.
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.
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
Ü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.

