How to Read Barcodes From System.Drawing in C
IronBarcode, tüm işletim sistemlerinde barkodları System.Drawing nesnelerinden otomatik olarak AnyBitmap dönüştürerek okuyabilir; bu sayede Microsoft'un yalnızca Windows için getirdiği System.Drawing desteği sınırlamasını çözer.
Giriş
System.Drawing nesneleri, .NET'te görüntü işleme görevlerinde yaygın olarak kullanılır. Ancak, Microsoft, System.Drawing desteğini durdurdu ve artık yalnızca Windows'u destekleyerek MacOS ve Linux için desteği kesmiştir. Bu değişiklik, IronBarcode'u Windows dışındaki işletim sistemlerinde kullanan geliştiriciler için sorunlar yarattı, çünkü barkodlarla çalışmak tipik olarak grafikler, görüntüler ve fontlar içerir.
Bu sorunu çözmek için IronDrawing'i tanıttık. Iron Software tarafından oluşturulan bu ücretsiz ve açık kaynaklı kütüphane, çapraz platform desteği sağlar ve sorunsuz bir deneyim sunar. IronBarcode'u NuGet'ten yüklediğinizde, IronDrawing projenize otomatik olarak dahil edilir.
Barkod okuma konusunda yeni olan geliştiriciler için temel kavramları ve temel kullanım desenlerini içeren kapsamlı Barkod Okuma Eğitimimize bakın. Farklı görüntü formatlarıyla çalışıyorsanız, görüntülerden barkod okuma rehberimiz ek bağlam ve örnekler sunar.
Hızlı Başlangıç: Tek bir satırla AnyBitmap kullanarak bir barkod okuyun
Bu kod parçası, IronBarcode'un bir System.Drawing.Bitmap oluşturarak ve IronDrawing'ya otomatik olarak AnyBitmap dönüştürerek barkodları nasıl okuduğunu gösterir. Sadece bir satır ile, her OS üzerindeki geliştiriciler hızlı sonuçlar elde eder.
-
IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve çalıştırın.
var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png"))); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın
Asgari İş Akışı (5 adım)
- İndir: Sistem Çiziminden Barkod Okuma için C# Kütüphanesi
System.DrawingnesneleriniAnyBitmapnesnesine dönüştürmek içinIronDrawingkullanınAnyBitmapnesnelerinden barkod okuma içinOkuyöntemini kullanın- Algılanan barkod değerlerini konsolda görüntüleyin
IronDrawingkullanımını kapsayan başka bir makale keşfedin
System.Drawing Nesneleri AnyBitmap'ye Nasıl Dönüştürülür?
System.Drawing'den barkod okumak, nesneyi AnyBitmap'ye dönüştürmeyi gerektirir. IronDrawing kullanım kolaylığı için tasarlanmış ve System.Drawing görüntü nesnelerini IronSoftware.Drawing olarak adlandırılan AnyBitmap nesnelerine otomatik bir şekilde dönüştürmeyi destekler.
System.Drawing nesnelerinin ötesinde, diğer türlerden dönüştürmeyi de destekliyoruz:
System.Drawing.BitmapSystem.Drawing.ImageSkiaSharp.SKBitmapSkiaSharp.SKImageSixLabors.ImageSharp
Yukarıdaki nesnelerin dönüşümüne dair kod örneğine bakın. Aşağıda, System.Drawing nesnelerinden IronSoftware.Drawing.AnyBitmap'ye barkod görüntülerinin nasıl dönüştürüldüğü gösterilmektedir:
Hangi System.Drawing Türleri Dönüştürülebilir?
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-cast-to-anybitmap.cs
using IronSoftware.Drawing;
using System.Collections.Generic;
List<AnyBitmap> barcodes = new List<AnyBitmap>();
// Instantiate System.Drawing.Bitmap
System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");
// Cast from System.Drawing.Bitmap to AnyBitmap
AnyBitmap barcode1 = bitmapFromBitmap;
barcodes.Add(barcode1);
// Instantiate System.Drawing.Bitmap
System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");
// Cast from System.Drawing.Image to AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;
barcodes.Add(barcode2);
Imports IronSoftware.Drawing
Imports System.Collections.Generic
Private barcodes As New List(Of AnyBitmap)()
' Instantiate System.Drawing.Bitmap
Private bitmapFromBitmap As New System.Drawing.Bitmap("test1.jpg")
' Cast from System.Drawing.Bitmap to AnyBitmap
Private barcode1 As AnyBitmap = bitmapFromBitmap
barcodes.Add(barcode1)
' Instantiate System.Drawing.Bitmap
Dim bitmapFromFile As System.Drawing.Image = System.Drawing.Image.FromFile("test2.png")
' Cast from System.Drawing.Image to AnyBitmap
Dim barcode2 As AnyBitmap = bitmapFromFile
barcodes.Add(barcode2)
Bu kod, System.Drawing nesneleri ile IronBarcode arasında IronDrawing üzerinden sorunsuz entegrasyonu gösterir. Bu uyumluluk, QR kodları, Kod 128, Kod 39 ve diğer birçok format dahil olmak üzere çeşitli barkod formatlarına yayılır. Ayrıntılar için desteklenen barkod formatları kılavuzumuza bakın.
Neden Kendiliğinden Dönüşüm Çalışıyor?
Yukarıdaki kodda, iki barkod görüntüsünü System.Drawing.Bitmap ve System.Drawing.Image olarak yükledik. Daha sonra, bu nesneleri AnyBitmap'ye otomatik olarak atayarak onları bir AnyBitmap nesnesi listesine ekledik.
IronDrawing'ün otomatik dönüştürme mekanizması, operatör aşırı yükleme kullanır ve System.Drawing türleri ile AnyBitmap arasında şeffaf bir dönüşüm sağlar. Bu tasarım deseni, geliştiricilerin mevcut kodlarını korurken çapraz platform uyumluluğu kazanmasına izin verir. Dönüşüm, çözünürlük, renk derinliği ve piksel verileri dahil olmak üzere tüm görüntü özelliklerini korur, kalite kaybı olmadan.
Kendiliğinden mi Yoksa Açık Dönüştürmeyi mi Kullanmalıyım?
Kendiliğinden dönüşüm kolaylık sağlarken, bazı senaryolarda açık dönüşüm tercih edilebilir:
// Implicit casting - clean and simple for straightforward conversions
System.Drawing.Bitmap systemBitmap = new System.Drawing.Bitmap("barcode.png");
AnyBitmap anyBitmap = systemBitmap; // Implicit cast
// Explicit casting - useful when type clarity is important
System.Drawing.Image systemImage = System.Drawing.Image.FromFile("qrcode.jpg");
AnyBitmap explicitBitmap = (AnyBitmap)systemImage; // Explicit cast
// When working with nullable types or conditional logic
System.Drawing.Bitmap? nullableBitmap = GetBitmapFromSource();
if (nullableBitmap != null)
{
AnyBitmap result = (AnyBitmap)nullableBitmap; // Explicit cast for clarity
// Process the barcode
}
// Implicit casting - clean and simple for straightforward conversions
System.Drawing.Bitmap systemBitmap = new System.Drawing.Bitmap("barcode.png");
AnyBitmap anyBitmap = systemBitmap; // Implicit cast
// Explicit casting - useful when type clarity is important
System.Drawing.Image systemImage = System.Drawing.Image.FromFile("qrcode.jpg");
AnyBitmap explicitBitmap = (AnyBitmap)systemImage; // Explicit cast
// When working with nullable types or conditional logic
System.Drawing.Bitmap? nullableBitmap = GetBitmapFromSource();
if (nullableBitmap != null)
{
AnyBitmap result = (AnyBitmap)nullableBitmap; // Explicit cast for clarity
// Process the barcode
}
Imports System.Drawing
' Implicit casting - clean and simple for straightforward conversions
Dim systemBitmap As New Bitmap("barcode.png")
Dim anyBitmap As AnyBitmap = systemBitmap ' Implicit cast
' Explicit casting - useful when type clarity is important
Dim systemImage As Image = Image.FromFile("qrcode.jpg")
Dim explicitBitmap As AnyBitmap = CType(systemImage, AnyBitmap) ' Explicit cast
' When working with nullable types or conditional logic
Dim nullableBitmap As Bitmap = GetBitmapFromSource()
If nullableBitmap IsNot Nothing Then
Dim result As AnyBitmap = CType(nullableBitmap, AnyBitmap) ' Explicit cast for clarity
' Process the barcode
End If
Yaygın Dönüştürme Hataları Nelerdir?
System.Drawing'yi AnyBitmap'ye dönüştürürken, geliştiriciler karşılaşabilir:
- Null Referans İstisnaları: Önce nesnenizin
System.Drawingolmadığını doğrulayın. - Desteklenmeyen Format İstisnaları: Bazı egzotik görüntü formatları önceden dönüştürme gerektirebilir
- Bellek Sorunları: Büyük görüntüler uygun bertaraf desenleri gerektirir
Dönüştürme sorunları için, barkod tanıma sırasında yaygın sorunlara çözümler sağlayan sorun giderme kılavuzumuz var.
AnyBitmap Nesnelerinden Barkodları Nasıl Okurum?
IronBarcode, tüm yöntemlerde ek bir yapılandırma gerektirmeden IronSoftware.Drawing.AnyBitmap nesnelerini kabul eder. Bu, Windows dışı işletim sistemlerinde System.Drawing nesneleri kullanırken geliştirmeyi basitleştirir. Aşağıdaki kod bunu gösterir:
AnyBitmap Parametrelerini Hangi Yöntemler Kabul Eder?
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-read-anybitmap.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
// Create a list of image file paths to read barcodes from
List<string> barcodeFiles = new List<string>
{
"test1.jpg",
"test2.png"
};
foreach (var barcodeFile in barcodeFiles)
{
// Read the barcode from file path
var results = BarcodeReader.Read(barcodeFile);
foreach (var result in results)
{
// Output the detected barcode value
Console.WriteLine(result.Value);
}
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
' Create a list of image file paths to read barcodes from
Dim barcodeFiles As New List(Of String) From {
"test1.jpg",
"test2.png"
}
For Each barcodeFile In barcodeFiles
' Read the barcode from file path
Dim results = BarcodeReader.Read(barcodeFile)
For Each result In results
' Output the detected barcode value
Console.WriteLine(result.Value)
Next
Next
Temel Read yönteminin ötesinde, IronBarcode birden çok AnyBitmap parametresini kabul eden yöntemler sağlar. Gelişmiş senaryolar için, çoklu barkodlar okuma kılavuzumuzda bir görüntüde birden çok barkodun verimli şekilde işlenmesini gösteren örnekler bulunmaktadır.
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-5.cs
// Advanced barcode reading with options
var readerOptions = new BarcodeReaderOptions
{
// Specify barcode types to search for
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
// Set confidence threshold
ConfidenceThreshold = 0.95
};
// Read with specific options
var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions);
Imports System
' Advanced barcode reading with options
Dim readerOptions As New BarcodeReaderOptions With {
' Specify barcode types to search for
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
' Set confidence threshold
.ConfidenceThreshold = 0.95
}
' Read with specific options
Dim advancedResults = BarcodeReader.Read(anyBitmap, readerOptions)
Birden Fazla Barkod Sonucu Nasıl İşlenir?
Yukarıdaki kod, önceki örneği genişletir. AnyBitmap listesini doldurduktan sonra, her AnyBitmap nesnesine Read metodunu çağırarak üzerinde iterasyon yaptık ve sonuç olarak IronBarCode.BarcodeResults döndü. Sonuçları yineleyerek barkod değerlerini konsola yazdırdık.
Birden fazla barkodu işlerken, daha iyi performans için paralel işlemden yararlanın:
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-6.cs
// Parallel processing for multiple barcode images
var barcodeFiles = Directory.GetFiles("barcodes/", "*.png");
var allResults = new ConcurrentBag<BarcodeResult>();
Parallel.ForEach(barcodeFiles, file =>
{
var bitmap = new System.Drawing.Bitmap(file);
var anyBitmap = (AnyBitmap)bitmap;
var results = BarcodeReader.Read(anyBitmap);
foreach (var result in results)
{
allResults.Add(result);
}
bitmap.Dispose(); // Clean up resources
});
// Process all results
foreach (var result in allResults)
{
Console.WriteLine($"Found {result.BarcodeType}: {result.Value}");
}
Imports System.IO
Imports System.Collections.Concurrent
Imports System.Drawing
Imports System.Threading.Tasks
' Parallel processing for multiple barcode images
Dim barcodeFiles = Directory.GetFiles("barcodes/", "*.png")
Dim allResults As New ConcurrentBag(Of BarcodeResult)()
Parallel.ForEach(barcodeFiles, Sub(file)
Dim bitmap As New Bitmap(file)
Dim anyBitmap As AnyBitmap = CType(bitmap, AnyBitmap)
Dim results = BarcodeReader.Read(anyBitmap)
For Each result In results
allResults.Add(result)
Next
bitmap.Dispose() ' Clean up resources
End Sub)
' Process all results
For Each result In allResults
Console.WriteLine($"Found {result.BarcodeType}: {result.Value}")
Next
Başka Hangi IronDrawing Özelliklerini Kullanabilirim?
IronSoftware.Drawing işlevselliği, görüntüleri dönüştürmenin ötesine gider. Barkodları ve QR kodlarını biçimlendirmek için kullanışlı olan renkler ve fontlar gibi görüntü işleme yönlerini ele alır. IronDrawing'yi kullanarak QR kodları özelleştirme ve logolar ekleme nasıl yaptığımızı keşfedin.
IronDrawing barkod işlemenin yanında güçlü görüntü işleme yetenekleri sağlar:
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-7.cs
// Using IronDrawing for image preprocessing
using IronSoftware.Drawing;
// Load and preprocess an image before barcode reading
AnyBitmap preprocessedImage = AnyBitmap.FromFile("noisy-barcode.jpg");
// Apply image filters to improve barcode readability
preprocessedImage = preprocessedImage.ToGrayScale();
preprocessedImage = preprocessedImage.Contrast(1.5); // Increase contrast
preprocessedImage = preprocessedImage.Sharpen(); // Sharpen image
// Read the preprocessed barcode
var improvedResults = BarcodeReader.Read(preprocessedImage);
Imports IronSoftware.Drawing
' Load and preprocess an image before barcode reading
Dim preprocessedImage As AnyBitmap = AnyBitmap.FromFile("noisy-barcode.jpg")
' Apply image filters to improve barcode readability
preprocessedImage = preprocessedImage.ToGrayScale()
preprocessedImage = preprocessedImage.Contrast(1.5) ' Increase contrast
preprocessedImage = preprocessedImage.Sharpen() ' Sharpen image
' Read the preprocessed barcode
Dim improvedResults = BarcodeReader.Read(preprocessedImage)
Belirli görüntü düzeltmeleri gerektiren senaryolar için, görüntü düzeltme rehberimiz barkod okunabilirliğini artırmak için filtrelerin nasıl kullanılacağını detaylandırır.
IronDrawing Üzerine Neden System.Drawing Tercih Edilmeli?
IronDrawing, System.Drawing üzerinde ikna edici avantajlar sunar:
- Platform Bağımsız Destek: Windows, Linux ve macOS'ta sorunsuz çalışırken,
System.Drawing(sadece Windows için .NET Core/5+ içinde) - Modern Mimari: Daha iyi performans ve bellek yönetimi için
SkiaSharpveImageSharpüzerinde kurulmuştur - Basitleştirilmiş API: Modern kolaylıklar eklerken tanıdık
System.Drawingbenzeri arayüzleri korur - Aktif Geliştirme: Düzenli güncellemeler ve iyileştirmeler, bakıma alınmış
System.Drawing'ün aksine - Daha İyi Entegrasyon: Iron Software ürünleriyle optimal performans tasarımına sahip
Özellikle bulut ortamları için devreye alma hususları için, kullandığımız Azure'a dağıtma ve AWS'ye dağıtma rehberlerimize bakın, bu rehberler IronDrawing kullanılarak çapraz platform uyumluluğu hakkında özel notlar içerir.
Masaüstü uygulamaları, web hizmetleri veya bulut tabanlı çözümler oluştururken, IronDrawing, barkod işleme kodunuzun tüm platformlarda taşınabilir ve etkili olmasını sağlar, bu da modern .NET geliştirmesi için ideal bir seçim haline getirir.
Sıkça Sorulan Sorular
Windows dışındaki platformlarda System.Drawing nesnelerinden barkodları nasıl okuyabilirim?
IronBarcode, System.Drawing nesnelerinden çapraz platformda barkod okumayı IronDrawing aracılığıyla otomatik olarak işler. IronDrawing, bunları AnyBitmap formatına dönüştürür. Bu, Microsoft'un yalnızca Windows platformlarına özgü System.Drawing sınırlamasını çözerek MacOS ve Linux sistemlerinde sorunsuz barkod okumanıza olanak tanır.
IronDrawing nedir ve neden barkod okuma ile birlikte verilir?
IronDrawing, Iron Software tarafından oluşturulmuş, grafik işlemleri için çapraz platform desteği sağlayan ücretsiz, açık kaynaklı bir kütüphanedir. NuGet'ten IronBarcode yüklediğinizde otomatik olarak dahil edilir ve System.Drawing nesnelerinden tüm işletim sistemlerinde barkod okunmasını AnyBitmap formatına dönüştürerek sağlar.
System.Drawing.Bitmap'i barkod okumak için nasıl dönüştürebilirim?
System.Drawing.Bitmap'ten barkodları basit bir şekle AnyBitmap olarak döküp okuyabilirsiniz: `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));`. IronBarcode, IronDrawing'in dolaylı döküm özelliğiyle dönüşümü otomatik olarak işler.
Linux ve MacOS'ta System.Drawing kullanarak barkod okuyabilir miyim?
Evet, IronBarcode, Linux ve MacOS'ta System.Drawing nesnelerinden barkod okunmasını IronDrawing aracılığıyla sağlar. Bu, System.Drawing nesnelerini çapraz platform AnyBitmap formatına otomatik olarak dönüştürür. Böylece Microsoft'un Windows'a özgü System.Drawing desteği sınırlamasını aşar.
Hangi tür System.Drawing nesneleri barkod okumada kullanılabilir?
IronBarcode, System.Drawing.Bitmap ve diğer resim türlerini de kapsayan çeşitli System.Drawing nesnelerinden barkod okuma desteği sağlar. Bu nesneler, çapraz platform barkod tarama işlevi sağlayan IronDrawing'in dolaylı döküm özelliği ile otomatik olarak AnyBitmap'e dönüştürülür.
System.Drawing'den barkodları okumak için basit bir tek satırlık çözüm var mı?
Evet, IronBarcode bir satırlık çözüm sunar: `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));`. Bu tek satırda bir System.Drawing.Bitmap oluşturur, IronDrawing aracılığıyla AnyBitmap'e döker ve resimdeki tüm barkodları okur.
IronBarcode barkod görünümünü özelleştirme desteği sağlıyor mu?
Evet, IronBarcode, barkod görünümünü özelleştirmek için renk, boyut ve metin notları gibi geniş seçenekler sunar, bu da barkodları belirli tasarım gereksinimlerinize göre uyarlamanıza imkan tanır.
IronBarcode, iş süreçlerindeki verimliliği artırmaya nasıl yardımcı olabilir?
IronBarcode, hızlı ve doğru barkod üretimi ve okuma yeteneği sağlayarak, manuel veri girişi hatalarını azaltır ve envanter ile varlık takibini iyileştirerek iş süreçlerinin verimliliğini artırır.
Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?
IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.
IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?
IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

