C# ile Görüntülerden QR Kodları Nasıl Okunur
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
Görüntülerden QR Kodu Nasıl Okunur
- Görüntülerden QR kodları okumak için C# kütüphanesini indirin
- Görüntü verilerini IronDrawing kullanarak içe aktarın
- Görüntü verilerinden bir
QrImageInputnesnesi oluşturun - Nesneyi
Readyöntemine geçirin - Algılanan her QR kodu arasında yineleme yapın ve bilgisini gözden geçirin
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.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronQR yükleyin
PM > Install-Package IronQR -
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}"); } } } } -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronQR kullanmaya başlayın ücretsiz deneme ile
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:
- 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.
- 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.
- Ö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
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}")
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.
: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
Giriş QR Kodu
Çıktı
Sistemin her QR kodu köşesinin tam uzamsal koordinatlarını konsola kaydettiğini fark edin.
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.
- 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.
- 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.
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
Ü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.

