System.Drawing Nesnelerinden Barkodlar Nasıl Okunur?

How to Read Barcodes From System.Drawing in C

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

IronBarcode, System.Drawing nesnelerindeki BARCODE'ları AnyBitmap ile IronDrawing arasında otomatik olarak dönüştürerek tüm işletim sistemlerinde okunmasını sağlar ve System.Drawing desteği için Microsoft'un yalnızca Windows ile sınırlı olan kısıtlamasını ortadan kaldırır.

Giriş

System.Drawing nesneleri, .NET'te görüntü işleme görevleri için yaygın olarak kullanılmaktadır. Ancak Microsoft, macOS ve Linux'ta System.Drawing desteğini sonlandırmış olup, artık yalnızca Windows'u desteklemektedir. Bu değişiklik, Windows dışındaki işletim sistemlerinde IronBarcode kullanan geliştiriciler için sorunlar yaratmıştır, çünkü barkodlarla çalışmak genellikle grafikler, resimler ve yazı tiplerini içerir.

Bu sorunu çözmek için IronDrawing'i piyasaya sürdük. Iron Software tarafından oluşturulan bu ücretsiz ve açık kaynaklı kütüphane, platformlar arası desteği basitleştirir ve sorunsuz bir deneyim sunar. NuGet'ten IronBarcode'u yüklediğinizde, IronDrawing otomatik olarak projenize eklenir.

BarCode okuma konusunda yeni olan geliştiriciler için, temel kavramları ve temel kullanım kalıplarını kapsayan kapsamlı BarCode Okuma Eğitimi'ne bakın. Çeşitli görüntü formatlarıyla çalışıyorsanız, görüntülerden BARCODE okuma kılavuzumuz ek bilgi ve örnekler sunar.

Hızlı Başlangıç: Tek bir satırda AnyBitmap kullanarak bir BARCODE'ı okuyun

Bu kod parçacığı, IronBarcode'un System.Drawing.Bitmap oluşturarak ve IronDrawing'nin bunu AnyBitmap'ye örtük olarak dönüştürmesine izin vererek BARCODE'ları nasıl okuduğunu gösterir. Tek bir satırla, herhangi bir işletim sistemindeki geliştiriciler hızlı sonuçlar elde eder.

  1. IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package BarCode
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));
  3. Canlı ortamınızda test için dağıtım yapın

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

    arrow pointer

System.Drawing Nesnelerini AnyBitmap'ye nasıl dönüştürebilirim?

System.Drawing'den BARCODE okumak için nesneyi AnyBitmap'ye dönüştürmek gerekir. IronDrawing, kullanım kolaylığı için tasarlanmıştır ve System.Drawing'den IronSoftware.Drawing adlı AnyBitmap görüntü nesnelerine görüntü nesneleri için örtük dönüştürmeyi destekler.

System.Drawing nesnelerinin yanı sıra, diğer türlerden dönüştürmeyi de destekliyoruz:

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SkiaSharp.SKImage
  • SixLabors.ImageSharp

Yukarıdaki nesneleri dönüştürmek için bu kod örneğine bakın. Aşağıda, System.Drawing nesnelerinden IronSoftware.Drawing.AnyBitmap'ye BARCODE görüntüleri dönüştürülmesi 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)
$vbLabelText   $csharpLabel

Bu kod, System.Drawing nesneleri ile IronBarcode arasında IronDrawing aracılığıyla sorunsuz entegrasyonu göstermektedir. Bu uyumluluk, desteklenen BARCODE formatları kılavuzumuzda ayrıntılı olarak açıklanan QR kodları, Code 128, Code 39 ve diğerleri dahil olmak üzere çeşitli BARCODE formatlarını kapsar.

İmplisit Dönüştürme Neden İşe Yarar?

Yukarıdaki kodda, iki BARCODE görüntüsünü System.Drawing.Bitmap ve System.Drawing.Image olarak yükledik. Daha sonra bunları AnyBitmap nesnelerine atayarak dolaylı olarak AnyBitmap'ye dönüştürdük, ardından bu nesneleri bir AnyBitmap listesine ekledik.

IronDrawing'nin örtük dönüştürme mekanizması, operatör aşırı yüklemesini kullanır ve System.Drawing türleri ile AnyBitmap arasında şeffaf bir dönüştürme sağlar. Bu tasarım kalıbı, geliştiricilerin mevcut kodları korurken platformlar arası uyumluluk elde etmelerini sağlar. Dönüştürme işlemi, çözünürlük, renk derinliği ve piksel verileri dahil olmak üzere tüm görüntü özelliklerini korur ve kalite kaybı yaşanmamasını sağlar.

Ne Zaman Açık, Ne Zaman Gizli Dönüştürme Kullanmalıyım?

Örtük dönüştürme kolaylık sağlasa da, bazı senaryolarda açık dönüştürme 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
$vbLabelText   $csharpLabel

Yaygın Döküm Hataları Nelerdir?

System.Drawing ifadesini AnyBitmap ifadesine dönüştürürken, geliştiriciler şu durumlarla karşılaşabilir:

  1. Null Referans İstisnaları: Dönüştürme işleminden önce System.Drawing nesnesinin null olmadığından emin olun
  2. Desteklenmeyen Biçim İstisnaları: Bazı nadir görüntü biçimleri önceden dönüştürülmeyi gerektirir
  3. Bellek Sorunları: Büyük resimler için uygun imha yöntemleri gereklidir

Dönüştürme sorunlarını gidermek için, sorun giderme kılavuzumuz BarCode tanıma sırasında sık karşılaşılan sorunlara çözümler sunar.

AnyBitmap Nesnelerinden BarCode'ları Nasıl Okurum?

IronBarcode, ek bir yapılandırma gerektirmeden tüm yöntemlerde IronSoftware.Drawing.AnyBitmap nesnelerini kabul eder. Bu, Windows dışındaki işletim sistemlerinde System.Drawing nesneleri kullanılırken geliştirme sürecini basitleştirir. Aşağıdaki kod bunu göstermektedir:

Hangi Yöntemler AnyBitmap Parametrelerini Kabul Ediyor?

: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
$vbLabelText   $csharpLabel

Temel Read yönteminin yanı sıra, IronBarcode AnyBitmap parametrelerini kabul eden çeşitli yöntemler sunar. Gelişmiş senaryolar için, tek bir görüntüdeki birden fazla BARCODE'u verimli bir şekilde işlemeyi gösteren birden fazla BARCODE'u okuma kılavuzumuza bakın:

// Advanced barcode reading with options
var readerOptions = new BarcodeReaderOptions
{
    // Specify barcode types to search for
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Co/de128,
    // Enable machine learning for better accuracy
    UseML = true,
    // Set confidence threshold
    Confidence = 0.95
};

// Read with specific options
var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions);
// Advanced barcode reading with options
var readerOptions = new BarcodeReaderOptions
{
    // Specify barcode types to search for
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Co/de128,
    // Enable machine learning for better accuracy
    UseML = true,
    // Set confidence threshold
    Confidence = 0.95
};

// Read with specific options
var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions);
' Advanced barcode reading with options
Dim readerOptions As New BarcodeReaderOptions With {
    ' Specify barcode types to search for
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
    ' Enable machine learning for better accuracy
    .UseML = True,
    ' Set confidence threshold
    .Confidence = 0.95
}

' Read with specific options
Dim advancedResults = BarcodeReader.Read(anyBitmap, readerOptions)
$vbLabelText   $csharpLabel

Birden Fazla BarCode Sonucunu Nasıl İşlerim?

Yukarıdaki kod, önceki örneği genişletmektedir. AnyBitmap listesini doldurduktan sonra, listeyi tek tek inceledik ve her bir Read nesnesinde AnyBitmap yöntemini çağırdık; bu da IronBarCode.BarcodeResults sonucunu verdi. Ardından, sonuçları tek tek inceleyerek BARCODE değerlerini konsola PRINT ettik.

Birden fazla BarCode'u işlerken, daha iyi performans için paralel işlemeyi kullanın:

// 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}");
}
// 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 = New ConcurrentBag(Of BarcodeResult)()

Parallel.ForEach(barcodeFiles, Sub(file)
                                   Dim bitmap = New Bitmap(file)
                                   Dim 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
$vbLabelText   $csharpLabel

Başka hangi IronDrawing özelliklerini kullanabilirim?

IronSoftware.Drawing işlevselliği, görüntüleri dönüştürmenin ötesine uzanır. BarCode'ları ve QR kodlarını biçimlendirmek için yararlı olan renkler ve yazı tipleri gibi görüntü işleme özelliklerini yönetir. IronDrawing'yi kullanarak QR kodlarını özelleştirme ve logolar ekleme yöntemlerimizi keşfedin.

IronDrawing, BarCode işlemeyi tamamlayan güçlü görüntü işleme yetenekleri sunar:

// 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.Co/ntrast(1.5); // Increase contrast
preprocessedImage = preprocessedImage.Sharpen(); // Sharpen image

// Read the preprocessed barcode
var improvedResults = BarcodeReader.Read(preprocessedImage);
// 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.Co/ntrast(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)
$vbLabelText   $csharpLabel

Belirli görüntü düzeltmeleri gerektiren senaryolar için, görüntü düzeltme kılavuzumuzda BARCODE okunabilirliğini artırmak için filtrelerin kullanımı ayrıntılı olarak açıklanmaktadır.

Neden IronDrawing'yi System.Drawing yerine seçmelisiniz?

IronDrawing, System.Drawing'ye göre cazip avantajlar sunar:

  1. Çapraz Platform Desteği: System.Drawing'den farklı olarak Windows, Linux ve macOS'ta sorunsuz çalışır (.NET Core/5+'da yalnızca Windows'ta çalışır)
  2. Modern Mimari: Daha iyi performans ve bellek yönetimi için SkiaSharp ve ImageSharp üzerine inşa edilmiştir
  3. Basitleştirilmiş API: System.Drawing benzeri tanıdık arayüzleri korurken modern kolaylıklar ekler
  4. Aktif Geliştirme: Bakım modundaki System.Drawing'den farklı olarak düzenli güncellemeler ve iyileştirmeler
  5. Daha İyi Entegrasyon: Iron Software ürünleri ile optimum performans için özel olarak tasarlanmıştır

Dağıtımla ilgili hususlar, özellikle bulut ortamları için, IronDrawing kullanılarak platformlar arası uyumluluk hakkında özel notlar içeren Azure'a dağıtım ve AWS'ye dağıtım kılavuzlarımıza bakın.

İster masaüstü uygulamaları, ister web hizmetleri veya bulut tabanlı çözümler geliştirin, IronDrawing, BarCode işleme kodunuzun tüm platformlarda taşınabilir ve verimli kalmasını sağlar, bu da onu modern .NET geliştirme 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.

Hairil Hasyimi Bin Omar
Yazılım Mühendisi
Tüm harika mühendisler gibi, Hairil de hevesli bir öğrenicidir. C#, Python ve Java bilgilerini geliştirerek, bu bilgileri Iron Software genelinde ekip üyelerine değer katmak için kullanıyor. Hairil, Malay'daki Universiti Teknologi MARA'dan Kimya ve Süreç Mühendisliği alanında lisans derecesi ile Iron ...
Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,240,258 | 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 BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.