QRCoder.NET vs IronBarcode: C# Barkod Kütüphanesi Karşılaştırması
QRCoder vs IronBarcode: Yalnızca QR Kodu Kitaplığı Nerede Sınırlarını Aşar
QRCoder bir şeyi olağanüstü şekilde iyi yapar: QR kodları saf C# içinde sıfır harici bağımlılık ile üretir, kısıtlanmamışMITlisansı ve standart yük formatlamasından çeşitli çıktı oluşturucularına kadar her şeyi ele alan düşünceli API ile. 60M+ NuGet indirimi ile itibarı hak edilmiştir.IronBarcode ile karşılaştırma bir kalite yargısı değil — bu, kapsam sorusudur. IronBarcode, 50'den fazla barkod formatını kapsar, yazar kadar okuyarak ve tutarlı bir API üzerinden PDF belgeleri ile entegre olur. QR üretiminin ötesine geçen gereksinimleri olan ekipler için, QRCoder'ın tasarımda kasıtlı olarak nerede durduğunu anlamak önemlidir.
QRCoder'ı Anlamak
QRCoder, Raffael Herrmann tarafından 2013'te oluşturuldu ve şimdi Shane32 tarafından korunmaktadır. Kütüphane tamamen C# ile yazılmış, sıfır harici bağımlılık — SkiaSharp sürüm çatışmaları yok, ImageSharp ticari lisans endişeleri yok, yerel ikili dosyalar dağıtımı yoktur. Hangi platformda .NET çalışıyorsa, o platformda çalışır.
MIT lisansı gerçekten sınırsızdır. Gelir eşiğinin bir ticari lisans gerekliliğini tetiklediği bazı popüler kütüphanelerin aksine,QRCodergizli ticari kısıtlamalar taşımaz. Bu ayrım, ticari uygulamalar geliştiren ekipler için önemlidir.
PayloadGenerator sınıfı önemli bir pratik değer katar: geliştiricilerin her bir standart için kablo formatını ezberlemesi gerekmediğinden, WiFi kimlik bilgileri, iletişim kartları (vCard), takvim etkinlikleri, SMS mesajları ve konum noktalarını içeren yaygın QR kod veri formatlarını yönetir. Çıktı türleri arasında güçlü bir renderer çeşitliliği de vardır.
Ana mimari özellikler:
- Sıfır Harici Bağımlılık: Saf C# ile hiçbir üçüncü taraf çalışma zamanı gereksinimi yoktur, konteynerleştirilmiş veya kısıtlı ortamları basitleştirir
- Gelir Kısıtlaması OlmadanMITLisansı: Ticari kullanım için gerçekten ücretsiz, gelir eşikleri veya ticari tetikleyiciler olmadan
- PayloadGenerator Yardımcıları: WiFi, vCard, CalendarEvent, SMS, Geo ve diğer yaygın QR yük standartlarına yönelik yerleşik formatlayıcılar
- Renderer Çeşitliliği: PNG baytları, SVG dizisi, ASCII sanatı, Base64, BMP ve birkaç ek çıktı formatı
- Tam Hata Düzeltmesi Kontrolü: Tüm dört ECC seviyesi (L, M, Q, H) açığa çıkarılmıştır
- Mikro QR Desteği: Tüm barkod kütüphanelerinde bulunmayan alan kısıtlamalı etiketler için kompakt QR varyantı
- Yalnızca QR Tasarımı: API yüzeyi yalnızca QR kod üretimini kapsar — 1D formatlar yok,DataMatrixyok, barkod okuma yok
Yalnızca QR Tasarımı
QRCoder, veri oluşturma adımını render adımından ayırır. QRCodeGenerator bir QRCodeData ara nesneyi üretir ve bu daha sonra bir render sınıfına geçirilir. Bu desen, ek nesneler pahasına çıktı formatı üzerinde kesin kontrol sağlar:
using QRCoder;
using System.IO;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.M
);
// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);
// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
using QRCoder;
using System.IO;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.M
);
// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);
// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);
Imports QRCoder
Imports System.IO
Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)
' PNG bytes via PngByteQRCode
Dim pngQR As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = pngQR.GetGraphic(20) ' 20px per module
File.WriteAllBytes("qr.png", pngBytes)
' SVG string via SvgQRCode
Dim svgContent As String = New SvgQRCode(qrCodeData).GetGraphic(10)
File.WriteAllText("qr.svg", svgContent)
QRCodeGenerator.CreateQrCode yöntemi, kod oluşturma için tek giriş noktasıdır—CreateCode128, CreateDataMatrix, CreateEAN13 yoktur. Kütüphane, tasarlandığı kapsama tamamen bağlıdır.
IronBarcode Anlama
IronBarcode, Iron Software'dan ticari bir .NET barkod kütüphanesidir ve tek, tutarlı bir API üzerinden 50'den fazla barkod formatının üretimi ve okumasını kapsar. Farklı format aileleri için ayrı kütüphaneler sürdürmek yerine,IronBarcode bütün formatları aynı statik BarcodeWriter ve BarcodeReader giriş noktaları üzerinde BarcodeEncoding parametreleri ile açığa çıkarır.
Kütüphane, statik bir API modelini kullanır: BarcodeWriter.CreateBarcode hiçbir örnek kurulumu gerektirmez ve BarcodeReader.Read dosya yolları, akışlar, bayt dizileri ve otomatik çok formatlı algılaması olan System.Drawing.Bitmap nesnelerini kabul eder. PDF belgeleri desteği — hem PDF sayfalarından barkodlar okuma hem de PDF'lere barkod yerleştirme — harici bağımlılık olmadan dahil edilmiştir.
Anahtar özellikler:
- 50+ Barkod Formatı: QR Kod, Code 128, EAN-13, UPC-A, DataMatrix, PDF417, Aztec, MaxiCode ve tek
BarcodeEncodingparametresi üzerinden birçok diğer format - Entegre Okuma API'si:
BarcodeReader.Read, görüntüleri, PDF'leri ve akışları otomatik format algılaması ile ele alır—ikinci bir kütüphane gerekmez - QR Kod Özelleştirme:
QRCodeWriteryöntemleri aracılığıyla logo gömme, renk değişiklikleri ve sessiz bölge kontrolü - PDF Entegrasyonu: PDF sayfalarından barkod okuma ve mevcut PDF belgelerine barkod basma
- Statik API Modeli: Üreteç örneği gerekmez—
BarcodeWriterstatik bir sınıftır - Ticari Lisans: Format başına kısıtlama olmaksızın tek geliştirici lisansı için 749 dolardan başlayan fiyatlarla
Özellik Karşılaştırması
Aşağıdaki tablo,QRCoderve IronBarcode arasındaki temel farkları özetlemektedir:
| Özellik | QRCoder | IronBarcode |
|---|---|---|
| QR Kod Üretimi | Evet — mükemmel | Evet |
| 1D Barkod Üretimi | Hayır | Evet (30+ format) |
| Diğer 2D Formatlar | Hayır | Evet (DataMatrix, PDF417, Aztec, vb.) |
| Barkod Okuma | Hayır | Evet — otomatik algılama |
| PDF Desteği | Hayır | Evet — oku ve damga |
| Lisans | MIT — gerçekten ücretsiz | Ticari ($749 tek geliştirici) |
Ayrıntılı Özellik Karşılaştırması
| Özellik | QRCoder | IronBarcode |
|---|---|---|
| Üretim | ||
| QR Kodu | Evet | Evet |
| Mikro QR | Evet | Hayır |
| Code 128 | Hayır | Evet |
| EAN-13 / UPC-A | Hayır | Evet |
| DataMatrix | Hayır | Evet |
| PDF417 | Hayır | Evet |
| Aztek | Hayır | Evet |
| Toplam formatlar | 1 | 50+ |
| QR Kod Özellikleri | ||
| Hata düzeltme (L/M/Q/H) | Evet | Evet |
| Logo gömme | Evet | Evet |
| Renk özelleştirme | Evet | Evet |
| SVG çıktısı | Evet | Evet |
| ASCII sanatı çıktısı | Evet | Hayır |
| Base64 çıktısı | Evet | Hayır |
| PayloadGenerator yardımcıları | Evet | Hayır — manuel string oluşturma |
| Okuma | ||
| Görüntüden çözme | Hayır | Evet |
| PDF'den çözme | Hayır | Evet |
| Otomatik format algılama | Hayır | Evet |
| Entegrasyon | ||
| PDF barkod damgası | Hayır | Evet |
| Sıfır harici bağımlılık | Evet | Kendi içinde tamamlanmış |
| Lisanslama | ||
| Lisans türü | MIT | Ticari |
| Gelir kısıtlamaları | None | None |
| Format başına fiyatlandırma | None | None |
QR Kod Üretimi
Her iki kütüphane de QR kodları üretir, ancak API'leri, oluşturma adımı ile işleme adımı arasındaki farklı tasarım felsefelerini yansıtır.
QRCoder Yaklaşımı
QRCoder, iki aşamalı bir desen kullanır: QRCodeGenerator.CreateQrCode, veri ve hata düzeltme seviyesini kodlayan bir QRCodeData ara nesnesi üretir ve ayrı bir render sınıfı bu ara nesneyi istenen çıktı formatına dönüştürür. ECC seviyesi, varsayılanı olmayan zorunlu bir parametredir — geliştiricilerin açıkça seçim yapması gerekir:
using QRCoder;
using System.IO;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.M
);
var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
using QRCoder;
using System.IO;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.M
);
var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);
Imports QRCoder
Imports System.IO
Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M)
Dim qrCode As New PngByteQRCode(qrCodeData)
Dim pngBytes As Byte() = qrCode.GetGraphic(20) ' pixels per module
File.WriteAllBytes("qr.png", pngBytes)
Bu desenin faydası, kod verisini yeniden üretmeden birden fazla çıktı formatı için qrCodeData nesnesini yeniden kullanmaktır. Render sınıfları arasında, PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode ve BitmapByteQRCode bulunur.
IronBarcode Yaklaşımı
IronBarcode, statik BarcodeWriter sınıfı üzerinde akıcı bir zincir içine üretim ve render işlemlerini birleştirir. BarcodeEncoding.QRCode parametresi formatı seçer ve SaveAsPng veya ToPngBinaryData gibi terminal yöntemler, çıktıyı belirler:
using IronBarCode;
// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
.ResizeTo(400, 400)
.SaveAsPng("qr.png");
using IronBarCode;
// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
.ResizeTo(400, 400)
.SaveAsPng("qr.png");
Imports IronBarCode
' Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode) _
.ResizeTo(400, 400) _
.SaveAsPng("qr.png")
Belirli hata düzeltme kontrolü gerektiren durumlar için, QRCodeWriter sınıfı format-spesifik seçenekler sağlar:
using IronBarCode;
var qr = QRCodeWriter.CreateQrCode(
"https://example.com",
500,
QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
using IronBarCode;
var qr = QRCodeWriter.CreateQrCode(
"https://example.com",
500,
QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");
Imports IronBarCode
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium)
qr.SaveAsPng("qr.png")
IronBarcode 2D barkod oluşturma rehberi, QR Kod, DataMatrix,PDF417veAztekdahil olmak üzere tüm desteklenen 2D formatları, aynı BarcodeWriter giriş noktası üzerinden kapsar.
QR Kod Özelleştirmesi
Her iki kütüphane de QR kodlarında logo gömme ve renk değişikliklerine destek verir, ancak gereken sistem türlerinde yaklaşım farklıdır.
QRCoder Yaklaşımı
QRCoder logo gömme işlemi, PngByteQRCode'dan ayrı olan QRCode renderer sınıfı üzerinden yönlendirilir ve GetGraphic'nun System.Drawing.Bitmap'yı kabul eden bir aşımı açığa çıkarılır. Bu, çağrı yapan kodun logo dosyasını yüklemek için doğrudan System.Drawing ile çalışması gerektiği anlamına gelir:
using QRCoder;
using System.Drawing;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);
var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
using QRCoder;
using System.Drawing;
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
"https://example.com",
QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);
var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);
Imports QRCoder
Imports System.Drawing
Dim qrGenerator As New QRCodeGenerator()
Dim qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H) ' High ECC required when logo occludes part of the code
Dim qrCode As New QRCode(qrCodeData)
Dim logoBitmap As New Bitmap("logo.png")
Dim qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap)
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png)
Renk özelleştirmesi, GetGraphic aşımının darkColor ve lightColor parametreleri üzerinden benzer bir deseni takip eder.
IronBarcode Yaklaşımı
IronBarcode, logo gömme ve renk değişikliklerini QRCodeWriter sonuç nesnesi üzerinde adlandırılmış yöntemler olarak açığa çıkarır. AddBrandLogo yöntemi bir dosya yolunu kabul eder ve ChangeBarCodeColor bir Color değerini kabul eder:
using IronBarCode;
using System.Drawing;
// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
"https://example.com",
500,
QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");
// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
using IronBarCode;
using System.Drawing;
// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
"https://example.com",
500,
QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");
// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");
Imports IronBarCode
Imports System.Drawing
' Logo embedding
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-logo.png")
' Colour customisation
Dim coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500)
coloredQr.ChangeBarCodeColor(Color.DarkBlue)
coloredQr.SaveAsPng("colored-qr.png")
QR kod stili özelleştirme kılavuzu, logo boyutlandırma, renk kombinasyonları ve sessiz bölge kontrolünü ayrıntılı olarak ele alır.
Barkod Okuma
Barkod okuma, iki kütüphane arasındaki en keskin yetenek farkını temsil eder.
QRCoder Yaklaşımı
QRCoder, bir barkod okuma API'sine sahip değil. QRCodeGenerator sınıfı ve tüm render sınıfları sadece üretim için vardır. Görüntüden, dosyadan veya akıştan bir QR kod çözmek için bir yöntem yoktur. Hem QR kodları üretmesi hem de okuması gereken uygulamalar, genellikle kendi API'sine, kendi ad alanına ve kendi bakım döngüsüne sahip başka bir kütüphane — genellikle ZXing.Net — eklemelidir:
//QRCoderhas no reading API.
// These methods do not exist:
// qrGenerator.Decode("image.png");
// QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
//QRCoderhas no reading API.
// These methods do not exist:
// qrGenerator.Decode("image.png");
// QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.
'QRCoder has no reading API.
' These methods do not exist:
' qrGenerator.Decode("image.png")
' QRCodeReader.Read("image.png")
'
' A separate library (e.g., ZXing.Net) is required for decoding.
Bu bir tasarım kararıdır, ihmalkarlık değil —QRCoderaçıkça bir üretim kütüphanesidir.
IronBarcode Yaklaşımı
IronBarcode, aynı pakette bir okuma API'si içerir. BarcodeReader.Read, görüntü dosyalarını, PDF dosyalarını, akışları ve System.Drawing.Bitmap nesnelerini kabul eder. Barkod formatlarını hangi formatı arayacağını çağırandan istemeden otomatik olarak algılar ve görüntüde bulunan tüm barkodları geri döndürür:
using IronBarCode;
// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
Console.WriteLine(result.Value); // decoded value
Console.WriteLine(result.Format); // QRCode, Code128, EAN13, etc.
}
using IronBarCode;
// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
Console.WriteLine(result.Value); // decoded value
Console.WriteLine(result.Format); // QRCode, Code128, EAN13, etc.
}
Imports IronBarCode
' Reading a QR code — no separate library required
Dim results = BarcodeReader.Read("qr.png")
For Each result In results
Console.WriteLine(result.Value) ' decoded value
Console.WriteLine(result.Format) ' QRCode, Code128, EAN13, etc.
Next
görüntülerden barkod okuma kılavuzu, PDF'lerden, çok sayfalı belgelerden, akışlardan ve aynı giriş noktası aracılığıyla düşük çözünürlüklü veya gürültülü görüntülerden okuma işlemlerini kapsar.
QR Ötesindeki Format Kapsamı
QRCoder Yaklaşımı
QRCoder yalnızca QR kodları üretir — bu, tasarım gereği böyledir. QRCodeGenerator.CreateQrCode yöntemi kütüphanenin sağladığı tek üretim giriş noktasıdır. QR kodlarıyla başlayıp daha sonra Kod 128 gönderim etiketleri, EAN-13 ürün kodları veyaDataMatrixeczacılık uygunluk kodları gerektiren projeler, her ek formatı kapsamak için ikinci bir kütüphaneyi tanıtmak zorundadır:
using QRCoder;
//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);
//Code 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
using QRCoder;
//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);
//Code 128requires a different library (e.g., NetBarcode)
//DataMatrixrequires yet another library
// Reading any format requires yet another library
Imports QRCoder
'QRCoder is limited to QR — other formats require separate packages
Dim qrGenerator As New QRCodeGenerator()
Dim qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M)
'Code 128 requires a different library (e.g., NetBarcode)
'DataMatrix requires yet another library
'Reading any format requires yet another library
IronBarcode Yaklaşımı
IronBarcode, aynı BarcodeWriter.CreateBarcode giriş noktası üzerinden tüm format ailelerini kapsar. QR koddan Code 128'e, DataMatrix'e geçiş yalnızca BarcodeEncoding parametresinin değişmesini gerektirir—ekstra paket yok, yeni ad alanı yok, ayrı API yok:
using IronBarCode;
// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
.SaveAsPng("campaign-qr.png");
BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
.SaveAsPng("product-code.png");
BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
.SaveAsPng("pharma-code.png");
using IronBarCode;
// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
.SaveAsPng("campaign-qr.png");
BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
.SaveAsPng("product-code.png");
BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
.SaveAsPng("pharma-code.png");
Imports IronBarCode
' All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode) _
.SaveAsPng("campaign-qr.png")
BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13) _
.SaveAsPng("product-code.png")
BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix) _
.SaveAsPng("pharma-code.png")
API Eşleme Başvurusu
| QRCoder | IronBarcode |
|---|---|
new QRCodeGenerator() |
Statik sınıf — örnek gerekmez |
qrGenerator.CreateQrCode(data, ECCLevel.M) |
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode) |
new PngByteQRCode(qrCodeData) |
Gerekli değil — işleme zincirin bir parçasıdır |
qrCode.GetGraphic(20) |
.ToPngBinaryData() ile .ResizeTo(w, h) |
new SvgQRCode(qrCodeData).GetGraphic(10) |
.SaveAsSvg(path) |
new QRCode(qrCodeData).GetGraphic(...) |
QRCodeWriter.CreateQrCode(data, size, level) |
QRCodeGenerator.ECCLevel.L |
QRCodeWriter.QrErrorCorrectionLevel.Low |
QRCodeGenerator.ECCLevel.M |
QRCodeWriter.QrErrorCorrectionLevel.Medium |
QRCodeGenerator.ECCLevel.Q |
QRCodeWriter.QrErrorCorrectionLevel.Quartile |
QRCodeGenerator.ECCLevel.H |
QRCodeWriter.QrErrorCorrectionLevel.Highest |
PayloadGenerator.WiFi(...).ToString() |
"WIFI:T:WPA;S:{ssid};P:{pass};;" |
| Okuma API'si yok | BarcodeReader.Read(path) |
| Yalnızca QR formatı | 50+ format BarcodeEncoding.* üzerinden |
Kodlar Takımlar QRCoder'dan IronBarcode'a Geçmeyi Düşündüğünde
Projeleri kesinlikle yalnızca QR için olan ve öyle kalan takımlar için,QRCoderiyi korunmuş bir kütüphane olarak amacı iyi bir şekilde hizmet etmeye devam eder. Aşağıdaki senaryolar, takımların o duruşu yeniden değerlendirmesine neden olan koşulları açıklar.
Format Gereksinimleri QR'ın Ötesinde Genişler
Çoğu barkod gerekliliği QR kodları ile başlar veQRCodero başlangıç kapsamını güvenilir bir şekilde ele alır. İkinci bir format konuşmaya girince tansiyon başlar. Gönderim için Kod 128 etiketler gereken lojistik ekipler, EAN-13 ürün kodları gerekli olan perakende işlemleri, seri numaralandırma içinDataMatrixzorunlu kılan eczacılık iş akışları — her yeni format, bir takımı başka bir NuGet bağımlılığı eklemeye iter. Her ek kütüphanenin entegrasyon maliyeti, öğrenilecek yeni bir ad alanını, izlenecek yeni bir sürüm döngüsünü ve .NET yükseltmelerinde potansiyel sürüm çatışmalarının yeni bir noktasını içerir.
Barkod Okuma Gerekliliği Olur
Bir kampanya için dışa dönük QR kodları üreten bir uygulama yalnızca üretim sistemidir. Aynı zamanda gelen gönderimleri işleyen, varışta ürün kodlarını doğrulayan veya bir etkinlikte biletleri doğrulayan bir uygulama üretim ve okuma sistemidir. QRCoder, tasarım gereği bir okuma yeteneğine sahip değil — bu boşluk başka bir kütüphaneyle doldurulmalıdır. Bir okuma kütüphanesi tanıtımı barkod alt sisteminin entegrasyon altyapısını önemli ölçüde değiştirir, özellikle okuma kütüphanesi kendi biçim-belirleyici gerekliliklerini veya iplik güvenliği kısıtlamalarını dayatıyorsa.
Çoklu Kütüphane Bakım Yükü
BirQRCodertabanlı proje için doğal birikim parçası öngörülebilir bir yolu izler: QR üretimi için QRCoder, gönderim etiketleri için bir 1D barkod kütüphanesi, kod çözme için bir okuma kütüphanesi. Her kütüphane kendi dökümantasyonunu, kendi sürümleme döngüsünü ve kendi kritik değişiklik tarihini taşır. .NET sürüm yükseltmesi bir kütüphane için küçük olabilecek bir şey, başka bir kütüphanede kritik bir değişiklikle aynı zamanda çakışabilir. Yıllar boyunca bu birikimi yöneten ekipler, gizli maliyetin başlangıç entegrasyonunda değil, birden fazla yükseltme döngüsü boyunca bulunan bileşik bakım yükünün içinde olduğunu bildirmektedir.
PDF Belge Desteği
PDF raporlarına gömülü barkodlar oluşturmak veya belge işleme hattında gelen PDF belgelerinden barkodlar çıkartmakQRCoderile mümkün değildir. PDF desteği, barkod yeteneklerine sahip tam bir PDF kütüphanesi veya özel bir kütüphane kombinasyonu gerektirir. Doküman merkezli iş akışları oluşturan ekipler — fatura işleme, uyumluluk raporları, şablonlu PDF'lerden etiket oluşturma — QRCoder'ın kapsam sınırının bir projenin yaşam döngüsünün başlarında PDF gereksinimleriyle kesiştiğini buluyor.
Genel Geçiş Dikkat Edilmesi Gereken Hususlar
PayloadGenerator Dize Formatı
QRCoder'ın PayloadGenerator yardımcı sınıfları, genel QR kod yük standartlarına uyan dizeler üretir. Örneğin, WiFi formatı WIFI:T:WPA;S:NetworkName;P:Password;; üretir. Bu dizeler, QR kodu spesifikasyonu tarafından belgelenen bir genel standart olduğu için IronBarcode içinde bir yardımcı sınıfa gerek duymadan doğrudan oluşturulabilir. Çok sayıda PayloadGenerator kullanımı olan ekipler, dize yapımını çoğaltan küçük statik yardımcı yöntemler yazmayı planlamalıdır.
ECCLevel Enum Eşlemesi
QRCoder, L, M, Q, H değerleri ile QRCodeGenerator.ECCLevel kullanır. IronBarcode, QRCodeWriter.QrErrorCorrectionLevel ile, Low, Medium, Quartile ve Highest değerleri kullanır. Eşleme doğrudan, ancak enum referansları tüm çağrı noktalarında güncellenmelidir. QRCoder, her CreateQrCode çağrısında açık ECC seçimi gerektirirken,IronBarcodeBarcodeWriter.CreateBarcode yolu kullanıldığında mantıklı bir varsayılanı uygular.
Renderer Sınıfı Kaldırma
QRCoder'ın render sınıfları—PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, QRCode—migrasyon sonrasında gereksiz hale gelir. IronBarcode, GeneratedBarcode üzerinde akıcı bir zincire render işlemi inşa eder, bu yüzden ara yönlendirici nesne deseni devam etmez. Bu render sınıflarını oluşturan kod, BarcodeWriter sonuç üzerinde terminal metod çağrıları ile değiştirilebilir.
Ek IronBarcode Yetenekleri
Yukarıdaki karşılaştırma bölümlerinde kapsanmayan IronBarcode özellikleri:
- PDF'lere Barkod Damgalama: Belirtilen sayfa koordinatlarına doğrudan mevcut PDF belgelerine barkodlar yerleştirin
- Çoklu Barkod Tespiti: Format karışımına bakılmaksızın, tek bir görüntüdeki tüm barkodları bir çağrıda okuyun
- Akış ve Bayt Dizisi Girişi:
BarcodeReader.Read, dosya I/O gerektirmedenStream,byte[]veSystem.Drawing.Bitmapgirdilerini kabul eder - Barkod Açıklaması ve Kenar Boşlukları: Üretilen barkodlara insan okuyabilir metin açıklamaları ekleyin ve kenar boşluğu genişliklerini yapılandırın
- Görüntü Formatı Çeşitleri: Aynı üretim zincirinden PNG, JPEG, TIFF, BMP, GIF, HTML ve SVG'ye çıktı alın
- Gürültülü Görüntü Ön İşleme: Bulanık, eğik veya düşük kontrastlı girdilerde okuma oranlarını artırmak için otomatik görüntü ön işleme
.NET Uyumluluğu ve Geleceğe Hazırlık
IronBarcode, güncel ve gelecek .NET sürümlerini hedefleyen düzenli güncellemeler ile aktif geliştirmeyi sürdürüyor. Kütüphane, yeni .NET sürümleri geldiğinde yayına alınan uyumluluk güncellemeleriyle, mevcut .NET LTS ve son sürümleri destekler.QRCoderda aktif olarak sürdürülen ve tüm mevcut .NET hedeflerinde çalışan bir projedir; sıfır bağımlılık tasarımı ileri uyumluluğu basit hale getirir. Her iki kütüphane de uzun vadeli .NET projeleri için uygundur. IronBarcode'u seçen ekipler için ticari destek modeli, teknik yardıma doğrudan erişim ve öncelikli hata çözme sağlar.
Sonuç
QRCoder ve IronBarcode, farklı mimari başlangıç noktalarından QR kodu oluşturma işlevine hitap ediyor. QRCoder, tasarımı bilerek QR'de sona eren, tek formatlı bir kütüphane olarak amaçlanmıştır.IronBarcode ise, 50'den fazla barkod formatı arasında oluşturma, okuma ve PDF entegrasyonu kapsayan çok formatlı bir kütüphanedir. Karşılaştırma iyi bir kütüphaneyle daha iyisi arasında değil; uzmanlaşmış bir araç ile genel amaçlı bir araç arasındadır.
QR kodu oluşturmanın kalıcı, sınırlı bir gereklilik olduğu projeler içinQRCoderdoğru seçimdir. Bağımlılık gerektirmeyen yapı izi, sınırsızMITlisansı ve PayloadGenerator yardımcıları, onu bir 2FA kayıt iş akışı için, bir pazarlama kampanyası QR oluşturan veya barkod kapsamının kesinlikle sabit olduğu herhangi bir bağlam için mükemmel bir seçim haline getirir. Kütüphane iyi korunmuş, yaygın olarak kullanılmış ve belirtilen işlevini güvenilir bir şekilde yerine getirmektedir. Bu özelliklere sahip ekipler değiştirerek hiçbir şey kazanmaz.
QR oluşturmanın ötesine uzanan veya uzanması muhtemel bir projenin barkod gereksinimleri olduğunda IronBarcode daha pratik bir seçim haline gelir. Gelen sevkiyatlardan veya taranmış belgelerden kod okuması, QR kampanyalarının yanı sıra Kod 128 etiketleri oluşturması veya PDF raporlarına gömülü barkod üreten uygulamalar, tüm bu görevlerde tek bir tutarlı API'den faydalanır. QRCoder C# alternatifleri kılavuzu, QR-only kütüphanelerin üretim ortamlarında sınırlarına ulaştıkları yerlere ilişkin ek bağlam sağlar. Lisanslama 749 dolardan başlar ve IronBarcode lisanslama sayfasında tamamen kapsanır.
Dürüst değerlendirme, doğru aracın tamamen projenin kapsamına bağlı olduğudur. Kalıcı QR-only gereksinimleri içinQRCoderihtiyaç duyulan her şeyi ücretsiz sağlar. Birden fazla formatı kapsayan, okuma veya PDF entegrasyonunu içeren gereksinimler için IronBarcode, proje geliştikçe birden fazla tek amaçlı kütüphaneyi yönetme ihtiyacını ortadan kaldırır.
Sıkça Sorulan Sorular
QRCoder.NET nedir?
QRCoder.NET, C# uygulamalarında barkod oluşturma ve okuma için bir .NET barkod kütüphanesidir. .NET projeleri için bir barkod çözümü seçerken geliştiricilerin değerlendirdiği birkaç alternatiften biridir.
QRCoder.NET ve IronBarcode arasındaki temel farklar nelerdir?
IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, QRCoder.NET genellikle kullanım öncesi örnek oluşturma ve yapılandırma gerektirir. IronBarcode ayrıca yerel PDF desteği, otomatik format tanıma ve tüm ortamlarda tek anahtarlı lisanslama sunar.
IronBarcode, QRCoder.NET'den daha mı kolay lisanslanır?
IronBarcode hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu, SDK anahtarlarını çalışma zamanı anahtarlarından ayıran lisanslama sistemlerine kıyasla CI/CD hatlarını ve Docker yapılandırmalarını basitleştirir.
IronBarcode, QRCoder.NET'in desteklediği tüm barkod formatlarını destekliyor mu?
IronBarcode, QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztek, EAN-13, UPC-A, GS1 ve daha birçokları dahil olmak üzere 30'dan fazla barkod sembolojisini destekler. Format otomatik algılama, açıkça format sayımını gerektirmez.
IronBarcode doğal PDF barkod okuma desteği sunuyor mu?
Evet. IronBarcode, ayrı bir PDF render kütüphanesi gerektirmeden, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından doğrudan barkod okur. Sayfa bazında sonuçlar sayfa numarası, barkod formatı, değeri ve güven puanını içerir.
IronBarcode, toplu işlem konusunda QRCoder.NET'e kıyasla nasıl bir performans sergiliyor?
IronBarcode'un statik yöntemleri durum terkibesizdir ve doğal olarak thread-safe'dir, bu da thread başına örnek yönetimi olmadan Parallel.ForEach'in doğrudan kullanımına olanak tanır. Herhangi bir fiyatlandırma seviyesinde bir throughput tavanı yoktur.
IronBarcode hangi .NET sürümlerini destekliyor?
IronBarcode, .NET Framework 4.6.2+, .NET Core 3.1 ve .NET 5, 6, 7, 8 ve 9'u tek bir NuGet paketinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunur.
Bir .NET projesine IronBarcode'u nasıl kurarım?
IronBarcode'u NuGet üzerinden kurun: Paket Yöneticisi Konsolunda 'Install-Package IronBarCode' komutunu veya CLI'da 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyicisi veya çalışma zamanı dosyası gerekmez.
QRCoder'in aksine IronBarcode'u satın almadan önce değerlendirebilir miyim?
Evet. IronBarcode'un deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek, barkod değerlerini tam olarak döndürür. Satın almadan önce, kendi belgelerinizde okuma doğruluğunu kıyaslayabilirsiniz.
QRCoder.NET ile IronBarcode arasındaki fiyat farkı nedir?
IronBarcode, geliştirme ve üretimi kapsayan, sürekli bir tek geliştirici lisansı için $749'dan başlar. Fiyat detayları ve hacim seçenekleri IronBarcode lisanslama sayfasında mevcuttur. Ayrı bir çalışma zamanı lisansı gerekliliği yoktur.
QRCoder.NET'den IronBarcode'a geçiş kolay mı?
QRCoder.NET'den IronBarcode'a geçiş, esas olarak örnek tabanlı API çağrılarını IronBarcode'un statik metotları ile değiştirmeyi, lisanslama şablonunu kaldırmayı ve sonuç özelliği adlarını güncellemeyi içerir. Çoğu geçiş, kod eklemek yerine kodu azaltmayı içerir.
IronBarcode, logolu QR kodları üretebiliyor mu?
Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png'), konfigüre edilebilir hata düzeltme ile QR koduna yerel olarak bir marka görüntüsü yerleştirir. Renkli QR kodları, ChangeBarCodeColor() ile de desteklenir.

