IronBarcode ile MAUI Çizgikodu Tarayıcı: Adım Adım Kılavuz
Mobil uygulamalar, envanter yönetimi, satış noktası sistemleri ve ürün takibi için giderek daha fazla barkod taramaya güveniyor. Bir MAUI barkod tarayıcı oluşturmak, QR kodları, Veri Matrisi ve diğer barkod formatlarını algılamak için bir kamera akışı ile görüntü dosyası işlemini birleştirerek barkod algılamayı doğrudan .NET MAUI uygulamanıza entegre etmenizi sağlar. Birçok kütüphane kamera önizlemesine odaklanırken, IronBarcode, eğimli açılar, zayıf aydınlatma koşulları ve hasar görmüş etiketler gibi zorlu koşullar altında bile ekstra yapılandırma gerektirmeden barkodları doğru bir şekilde okuma konusunda mükemmeldir.
Bu kılavuz, IronBarcode kullanarak bir .NET MAUI projesinde barkod taramanın uygulanmasının her adımını açıklar. Sonuna geldiğinizde, tek bir görüntü dosyasından birden fazla barkodu tarayabilir, cihaz kamerasından barkodlar yakalayabilir ve kütüphaneyi kendi çapraz platform projelerinize güvenle entegre edebileceksiniz.
Bir MAUI Barkod Tarayıcı Oluşturmak İçin Ön Koşullar Nelerdir?
Başlamadan önce, geliştirme ortamınızın düzenli olduğundan emin olun:
- Visual Studio 2022 (v17.8 veya sonrası) .NET MAUI iş yükü yüklü
- .NET 10 SDK -- resmi .NET sitesinden indirin
- Temel C# bilgisi -- async/await desenleriyle tanışıklık yardımcı olacaktır
- Kamera testi için yapılandırılmış fiziksel cihaz veya emülatör
- IronBarcode lisansı -- değerlendirme için bir ücretsiz deneme mevcut
Projenizi oluşturmadan önce Visual Studio'da MAUI iş yükünün yüklü olduğundan emin olmak, önemli miktarda sorun giderme zamanından tasarruf sağlar. Bu durumu, Visual Studio Yükleyici'de "Bireysel bileşenler" altında ".NET Çoklu platform Uygulama UI geliştirme." arayarak doğrulayabilirsiniz.
IronBarcode'un MAUI ile Nasıl Uyduğunu Anlamak
.NET MAUI, Android, iOS, macOS ve Windows'u hedefleyen tek bir kod tabanı sunar. Bu ortamda barkod taramanın zorluğu, her platformun kamera erişimini farklı şekilde yönetmesi gerçeğidir. IronBarcode, bunun ustesinden görüntü işleme katmaninda calisarak gelir -- siz MAUI'nin MediaPicker araciligiyla görüntüyu yakalarsiniz, sonra baytlari analiz icin IronBarcode'a verirsiniz.
Bu endişelerin ayrılması, kodunuzu temiz tutar ve platforma özgü barkod SDK'larından kaçırır. IronBarcode'un çevrimdışı işleme modeli ayrıca barkod verilerinin cihaza bırakılmasını engelleyerek düzenlenmiş sektörlerdeki uygulamalar için önem taşır.
Desteklenen Barkod Formatları
IronBarcode, geniş bir format yelpazesini okur, bunlar şunları içermektedir:
| Format Kategorisi | Formatlar | Genel Kullanım Durumları |
|---|---|---|
| 1D Lineer | Kod 128, Kod 39, EAN-13, UPC-A, ITF | Perakende, lojistik, sağlık |
| 2D Matris | QR Kod, Veri Matrisi, Aztek, PDF417 | Mobil ödemeler, biletleme, üretim |
| Posta | USPS, Royal Mail, Deutsche Post | Kargo ve posta hizmetleri |
| Uzmanlık | MaxiCode, GS1, MicroPDF417 | Tedarik zinciri, taşımacılık, paketler |
MAUI Barkod Tarama Projesi Nasıl Kurulur?
Visual Studio 2022'de yeni bir .NET MAUI Uygulamasi projesi oluşturarak başlayin. Adini BarcodeScannerApp koyun ve hedef dieverim olarak .NET 10'u secin. Visual Studio, Android, iOS, macOS ve Windows için platforma özgü klasörleri içeren standart MAUI proje yapısını oluşturur.
NuGet ile IronBarcode Yükleme
NuGet Paket Yöneticisi Konsolu'nu açın ve çalıştırın:
Install-Package BarCode
Alternatif olarak, Cozum Gezgini'nde projenize sag tiklayin, 'NuGet Paketlerini Yonet' secenegini secin, IronBarCode arayin ve en son karali surunu yukleyin. Özellikle .NET MAUI projeleri için, IronBarcode'un NuGet paketi gerekli tüm yerel bağımlılıkları içerir.
Lisansınızı Etkinleştirme
Kurulumdan sonra, IronBarcode'u uygulama yaşam döngüsünün erken aşamalarında lisans anahtarınızla etkinleştirin. En iyi yer, uygulama oluşturucu calismadan once MauiProgram.cs'dir:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Iron Software web sitesinden ücretsiz deneme lisansı anahtarı edinin. Deneme anahtarları, geliştirme sırasında zaman sınırlamaları olmadan tüm özellikleri değerlendirmenize olanak tanır, ancak çıktınızda tam bir lisans uygulayana kadar deneme filigranı bulunabilir.
Android ve iOS için Kamera İzinleri Nasıl Yapılandırılır?
Platforma özgü kamera izinleri, barkod tarama işlevselliği için esastır. Her platform, MediaPicker.CapturePhotoAsync() basarili olmadan once, kendi manifest dosyalarinda özgüne ayar gerektirir.
Android İzinleri
Kamera erişimi beyan etmek icin Platforms/Android/AndroidManifest.xml duzenleyin:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
android.permission.CAMERA girdisi, kullanicidan calisma izinleri talep eder. uses-feature beyanlari, uygulamanizin kamera donanimi ve otofokus kapasitesi gerektirdigini Google Play Store'a bildirir. Bunlar olmadan, Android cihazlar izin isteğini verebilir ancak yine de dahili olarak kamera erişimini engelleyebilir.
Android 13 ve sonrasi (API seviyesi 33+), ayrintili medya izinlerini MainActivity.cs kullanarak ele almaniz gerekebilir. MAUI MediaPicker soyutlamasi bunlarin cogunu otomatik olarak handle eder, ancak yayinlamadan once fiziksel cihaz testi onerilir.
iOS İzinleri
Kamera kullanim aciklamasini dahil etmek icin Platforms/iOS/Info.plist duzenleyin:
<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
iOS, her gizlilik duyarlı izin için insan okuyabilir bir açıklama gerektirir. Apple'ın App Store inceleme süreci, bu açıklamanın eksik veya belirsiz olması durumunda uygulamanızı reddeder. Metin, uygulama ilk kez kamera erişimi istediğinde kullanıcıya gösterilen sistem izin diyalogunda görünür.
iPadOS icin, kullanicilarin canli kameranin yaninda kaydedilmis fotolardan barkod taratmalara izin vermeyi planliyorsaniz NSPhotoLibraryUsageDescription eklemeyi de dusunun.
Windows ve macOS
Windows Masaüstü ve macOS hedefleri için, kamera erişim izinleri sırasıyla uygulama manifesti ve yetkilendirme dosyaları aracılığıyla yönetilir. MAUI framework'ü bunu buyuk olcude sablon seviyesinde ele alir, ancak Package.appxmanifest icinde webkamera cihaz kapasitesini dahil ettigini dogrulayin.
Barkod Tarayıcı Arayüzü Nasıl Oluşturulur?
Tarama surecinde kullanicilara net bir geri bildirim veren MainPage.xaml icinde bir kullanıcı arayuzu tasarlayin. Minimum ama işlevsel bir düzen, bir ön izleme resmi, bir sonuç görüntüleme alanı ve bir tarama tetikleme düğmesi içerir:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BarcodeScannerApp.MainPage"
Title="Barcode Scanner">
<VerticalStackLayout Padding="20" Spacing="20">
<Label Text="Point the camera at a barcode"
FontSize="16"
HorizontalOptions="Center"
TextColor="#555555" />
<Image x:Name="CapturedImage"
HeightRequest="300"
Aspect="AspectFit"
BackgroundColor="#F0F0F0" />
<Label x:Name="ResultLabel"
Text="Tap Scan to begin"
FontSize="18"
HorizontalOptions="Center"
FontAttributes="Bold" />
<Label x:Name="FormatLabel"
Text=""
FontSize="13"
HorizontalOptions="Center"
TextColor="#888888" />
<Button Text="Scan Barcode"
Clicked="OnScanClicked"
BackgroundColor="#007ACC"
TextColor="White"
CornerRadius="8"
HeightRequest="50" />
<Button Text="Load from Gallery"
Clicked="OnPickFromGalleryClicked"
BackgroundColor="#5C5C5C"
TextColor="White"
CornerRadius="8"
HeightRequest="50" />
</VerticalStackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BarcodeScannerApp.MainPage"
Title="Barcode Scanner">
<VerticalStackLayout Padding="20" Spacing="20">
<Label Text="Point the camera at a barcode"
FontSize="16"
HorizontalOptions="Center"
TextColor="#555555" />
<Image x:Name="CapturedImage"
HeightRequest="300"
Aspect="AspectFit"
BackgroundColor="#F0F0F0" />
<Label x:Name="ResultLabel"
Text="Tap Scan to begin"
FontSize="18"
HorizontalOptions="Center"
FontAttributes="Bold" />
<Label x:Name="FormatLabel"
Text=""
FontSize="13"
HorizontalOptions="Center"
TextColor="#888888" />
<Button Text="Scan Barcode"
Clicked="OnScanClicked"
BackgroundColor="#007ACC"
TextColor="White"
CornerRadius="8"
HeightRequest="50" />
<Button Text="Load from Gallery"
Clicked="OnPickFromGalleryClicked"
BackgroundColor="#5C5C5C"
TextColor="White"
CornerRadius="8"
HeightRequest="50" />
</VerticalStackLayout>
</ContentPage>
Düzen, iki tarama yolu sağlar: kamerayla yeni bir fotoğraf çekmek ve galeriden mevcut bir resmi seçmek. Bu, kullanıcıların önceden barkodları fotoğrafladığı veya resimleri e-posta ile aldığı iş akışları için önemlidir. FormatLabel tespit edilen barkod formatini ve debug işlemleri sirasinda ve kullanıcı doğrulama icin yardimci olan cozulmus degeri görüntüler.
Tarama Durum Geri Bildirimi Ekleme
Duzgun bir deneyim icin, tarama tuslarini bir ActivityIndicator icine sarmayi dusunun ki işleme başladiginda gorunsun. IronBarcode'un asenkron API'si bu işlemi kolaylastirir -- IsRunning = true ayarlayabilir ve BarcodeReader.ReadAsync cagrildiktan sonra finally blogunda sifirlayabilirsiniz.
Barkod Okuyucu İşlevselliği Nasıl Uygulanır?
Esas tarama mantigini MainPage.xaml.cs icinde gerceklestirin. Aşağıdaki kod, uygun async kalıpları ve hata yönetimi ile hem kamera yakalama hem de galeri seçim işlemlerini ele alır:
using IronBarCode;
using IronSoftware.Drawing;
namespace BarcodeScannerApp;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnScanClicked(object sender, EventArgs e)
{
await ScanFromSource(() => MediaPicker.Default.CapturePhotoAsync());
}
private async void OnPickFromGalleryClicked(object sender, EventArgs e)
{
await ScanFromSource(() => MediaPicker.Default.PickPhotoAsync());
}
private async Task ScanFromSource(Func<Task<FileResult?>> sourceFunc)
{
try
{
var photo = await sourceFunc();
if (photo is null) return;
using var stream = await photo.OpenReadAsync();
using var memoryStream = new MemoryStream();
await stream.CopyToAsync(memoryStream);
var imageBytes = memoryStream.ToArray();
// Show the captured image in the UI
CapturedImage.Source = ImageSource.FromStream(() =>
new MemoryStream(imageBytes));
// Process with IronBarcode
var bitmap = AnyBitmap.FromBytes(imageBytes);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = false
};
var results = await BarcodeReader.ReadAsync(bitmap, options);
if (results.Any())
{
var first = results.First();
ResultLabel.Text = $"Value: {first.Value}";
FormatLabel.Text = $"Format: {first.BarcodeType}";
}
else
{
ResultLabel.Text = "No barcode detected";
FormatLabel.Text = string.Empty;
}
}
catch (FeatureNotSupportedException)
{
await DisplayAlert("Unsupported",
"Camera is not available on this device.", "OK");
}
catch (PermissionException)
{
await DisplayAlert("Permission Required",
"Please grant camera permission in Settings.", "OK");
}
catch (Exception ex)
{
await DisplayAlert("Error",
$"Scanning failed: {ex.Message}", "OK");
}
}
}
using IronBarCode;
using IronSoftware.Drawing;
namespace BarcodeScannerApp;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnScanClicked(object sender, EventArgs e)
{
await ScanFromSource(() => MediaPicker.Default.CapturePhotoAsync());
}
private async void OnPickFromGalleryClicked(object sender, EventArgs e)
{
await ScanFromSource(() => MediaPicker.Default.PickPhotoAsync());
}
private async Task ScanFromSource(Func<Task<FileResult?>> sourceFunc)
{
try
{
var photo = await sourceFunc();
if (photo is null) return;
using var stream = await photo.OpenReadAsync();
using var memoryStream = new MemoryStream();
await stream.CopyToAsync(memoryStream);
var imageBytes = memoryStream.ToArray();
// Show the captured image in the UI
CapturedImage.Source = ImageSource.FromStream(() =>
new MemoryStream(imageBytes));
// Process with IronBarcode
var bitmap = AnyBitmap.FromBytes(imageBytes);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = false
};
var results = await BarcodeReader.ReadAsync(bitmap, options);
if (results.Any())
{
var first = results.First();
ResultLabel.Text = $"Value: {first.Value}";
FormatLabel.Text = $"Format: {first.BarcodeType}";
}
else
{
ResultLabel.Text = "No barcode detected";
FormatLabel.Text = string.Empty;
}
}
catch (FeatureNotSupportedException)
{
await DisplayAlert("Unsupported",
"Camera is not available on this device.", "OK");
}
catch (PermissionException)
{
await DisplayAlert("Permission Required",
"Please grant camera permission in Settings.", "OK");
}
catch (Exception ex)
{
await DisplayAlert("Error",
$"Scanning failed: {ex.Message}", "OK");
}
}
}
Imports IronBarCode
Imports IronSoftware.Drawing
Namespace BarcodeScannerApp
Public Partial Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub OnScanClicked(sender As Object, e As EventArgs)
Await ScanFromSource(Function() MediaPicker.Default.CapturePhotoAsync())
End Sub
Private Async Sub OnPickFromGalleryClicked(sender As Object, e As EventArgs)
Await ScanFromSource(Function() MediaPicker.Default.PickPhotoAsync())
End Sub
Private Async Function ScanFromSource(sourceFunc As Func(Of Task(Of FileResult?))) As Task
Try
Dim photo = Await sourceFunc()
If photo Is Nothing Then Return
Using stream = Await photo.OpenReadAsync()
Using memoryStream = New MemoryStream()
Await stream.CopyToAsync(memoryStream)
Dim imageBytes = memoryStream.ToArray()
' Show the captured image in the UI
CapturedImage.Source = ImageSource.FromStream(Function() New MemoryStream(imageBytes))
' Process with IronBarcode
Dim bitmap = AnyBitmap.FromBytes(imageBytes)
Dim options = New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = False
}
Dim results = Await BarcodeReader.ReadAsync(bitmap, options)
If results.Any() Then
Dim first = results.First()
ResultLabel.Text = $"Value: {first.Value}"
FormatLabel.Text = $"Format: {first.BarcodeType}"
Else
ResultLabel.Text = "No barcode detected"
FormatLabel.Text = String.Empty
End If
End Using
End Using
Catch ex As FeatureNotSupportedException
Await DisplayAlert("Unsupported", "Camera is not available on this device.", "OK")
Catch ex As PermissionException
Await DisplayAlert("Permission Required", "Please grant camera permission in Settings.", "OK")
Catch ex As Exception
Await DisplayAlert("Error", $"Scanning failed: {ex.Message}", "OK")
End Try
End Function
End Class
End Namespace
Bu uygulama, kamera ve galeri yolları arasında görüntü işleme mantığını kopyalamaktan kaçınmak için bir paylaşılmış ScanFromSource yardımcı yöntemi kullanır. AnyBitmap.FromBytes yöntemi JPEG, PNG, WebP ve diğer yaygin görüntü formatlarini otomatik olarak isler -- manuel format tespiti gerekmez.
Sonuc nesnesi first.Value (çözülen metin), first.BarcodeType (format enumu) ve tespit edilen barkod bölgesinin kırpılmış bir görüntüsünü sağlayan first.BarcodeImage gibi özellikleri sunar. Tam liste için BarcodeResult sınıf belgelerine bakın.
Tarama Uygulamanızı Test Etme
Kod yerleştirildikten sonra, standart bir barkodla test edebilirsiniz:

Tarandıktan sonra, çözümlenen değer ekranda görünür:

Gelişmiş Tarama Seçeneklerini Nasıl Yapılandırırsınız?
IronBarCode, belirli kullanım durumunuza göre algılama davranışını ayarlamanızı sağlayan bir BarcodeReaderOptions nesnesi ortaya çıkarır. Bu seçenekleri anlamak, uygulamanızın ihtiyaçlarına bağlı olarak hızı doğruluğa karşı dengelemenizde yardımcı olur.
Belirli Barkod Türlerini Hedefleme
Beklediğiniz belirli barkod türlerini belirtmek, IronBarcode'un gereksiz format kontrollerinden kaçınarak işlem süresini önemli ölçüde azaltır:
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = await BarcodeReader.ReadAsync(bitmap, options);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = await BarcodeReader.ReadAsync(bitmap, options);
Imports System.Threading.Tasks
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}
Dim results = Await BarcodeReader.ReadAsync(bitmap, options)

ExpectMultipleBarcodes = true ayarlamak, paket etiketi yüzey akışlarında tek bir paket etiketinde bir düzine barkod içerebileceği durumlar icin ilk sonucu bulduktan sonra IronBarcode'un taramaya devam etmesi talimatını verir.
Okuma Hızı Seçenekleri
ReadingSpeed enumu dört seviye sunar: ExtremeDetail, Detailed, Balanced, ve QuickScan. Barkodlarin temiz ve iyi aydinlatildigi yuksek hacimli senaryolar icin QuickScan kullanin. Düşük çözünürlüklü kamera çekimlerinden tararken veya kısmen zarar görmüş etiketlerden Detailed veya ExtremeDetail geçiş yapın.
Görüntü düzeltme filtreleri ve güven derecesi eşikleri de dahil olmak üzere tuning BarcodeReaderOptions hakkında daha fazla bilgi için belgeler ayrıntılı örnekler sağlar.
Görüntü Düzeltme ve Ön İşleme
IronBarcode, döndürülmüş, eğik veya kötü aydınlatılmış taramalarda bile otomatik olarak görüntü düzeltmeleri içeren yerleşik özellikler içerir. BarcodeReaderOptions.ImageFilters araciligiyla manuel olarak on işlem filtreleri uygulayabilirsiniz:
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter(1.2f)
}
};
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed,
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(),
new ContrastFilter(1.2f)
}
};
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed,
.ImageFilters = New ImageFilterCollection From {
New SharpenFilter(),
New ContrastFilter(1.2F)
}
}
Ön işleme filtreleri, uygulamanın düşük kaliteli kamera sensörlerine sahip eski Android cihazlarını hedeflemesi veya kullanıcıların depo veya açık hava ortamlarında olduğu gibi düşük ışık koşullarında barkodları fotoğraflamasının olası olduğu durumlarda özellikle yararlıdır.
Yaygın Sorun Giderme Senaryolarını Nasıl Ele Alırsınız?
İyi yapılandırılmış bir MAUI barkod tarayıcıya rağmen, cihaz spesifik davranışları, görüntü kalitesi sorunları veya platform kısıtlamaları nedeniyle sorunlar ortaya çıkabilir.
Kamera Açılmıyor
Kamera başlatilamazsa, hem AndroidManifest.xml hem de Info.plist içinde izinlerin doğru şekilde beyan edildiğini kontrol edin. Ardından, sıcak güncelleme yerine temiz bir yapıdan uygulamayı yeniden dağıtın. Android'de, test cihazınızın standart dışı bir kamera yapılandırması kullanıp kullanmadığını da kontrol edin - çok sayıda kameraya sahip bazı cihazlar için lens seçiminin açık şekilde belirtilmesi gerekir.
Simulatorde MediaPicker.CapturePhotoAsync() desteklenmez. Her zaman fiziksel bir cihazda kamera özelliklerini test edin. Emülatör, galeri seçimi icin PickPhotoAsync destekler, yüklü görüntülerle temel UI testleri icin kullanabilirsiniz.
Zayıf Tarama Doğruluğu
IronBarcode hiçbir sonuç döndürmez veya yanlış değerler döndürürse, şu ayarlamaları deneyin:
Speed'iReadingSpeed.DetailedveyaExtremeDetailolarak arttirin- Imagenin filtre boru hattina
SharpenFilterveContrastFilterekleyin - Yakalanan görüntü çözünürlüğünün en az 720p olduğundan emin olun; daha düşük çözünürlükler, Data Matrix gibi yoğun formatlarla algılamayı zorlaştırabilir
- Barkod tipinin
ExpectBarcodeTypesmaskenize dahil olup olmadığını kontrol edin
IronBarcode sorun giderme kılavuzu, format-spesifik sorunlar için ek tanı adımlarını kapsar.
Bellek Yönetimi
Buyuk kamerali görüntüler MemoryStream'e yuklendiklerinde çok fazla bellek tuketirler. Tüm stream nesnelerinde her zaman using ifadeleri kullanarak imha saglayin. Kullanicilar sirayla birden fazla ogeleri taradığı surekli tarama iş akışları icin, çöp toplayicisini beklemek yerine işlemden sonra bitmap.Dispose() metodunu acikca cagirin.
Sınırlı yığın alanına sahip Android cihazlarda, IronBarcode'a geçirmeden önce görüntüyü düşürmeyi düşünün, taramalar temiz ve yüksek kontrastlı barkodlar olduğunda, çözmeye tam çözünürlük gerekmezse.
iOS'a Özgü Platform Davranışı
iOS'ta, uygulamanız kamera izni istediğinde, sistem bir kerelik bir diyalog gösterir. Kullanıcı bunu reddederse, daha sonraki CapturePhotoAsync çagirlari bir PermissionException oluşturur. Bu durumu, kullaniciyi Ayarlara yönlendirerek yönetin, bunu AppInfo.ShowSettingsUI() ile yapabilirsiniz.
App Store'a göndermeden önce Info.plist içinde NSCameraUsageDescription'in mevcut oldugunu dogrulayin. Eksik gizlilik dizelemeleri, inceleme ekibinden ayrıntılı bir açıklama almadan otomatik red ile sonuçlanır. İzin isteği zamanlaması ve mesajlaşması üzerine en iyi uygulamalar için Apple İnsan Arayüzü Kılavuzu'nu gözden geçirin.
Sıradaki Adımlarınız Neler?
IronBarcode ile çalışan bir MAUI barkod tarayıcısına sahip olduktan sonra, uygulamanızın gereksinimlerine bağlı olarak birkaç yol mevcuttur:
- Barkodlar Oluşturun -- IronBarcode, dize verilerinden QR kodları, Code 128 etiketleri ve diğer formatları oluşturmak için barkod oluşturma API'si içerir
- Toplu tarama -- bir döngü halinde birden fazla görüntü dosyasını
BarcodeReader.ReadAsyncileExpectMultipleBarcodes = trueisleyin; toplu tarama örneklerine bakın - PDF barkod çıkartma -- IronBarcode, aynı
BarcodeReadersınıfını kullanarak PDF belgelerinin icine gomulu barkodlari okuyabilir; PDF barkod okuma belgelerini keşfedin - Stil ve markalama -- oluşturulan barkodların görsel çıktısını renkler, logolar ve açıklamalarla özelleştirin; barkod stil seçeneklerine bakın
- Diğer IronSoftware ürünleri -- MAUI uygulamanız da PDF oluşturma, OCR veya elektronik tablo desteği gerektiriyorsa, tutarlı çapraz platform yetenekleri için tam Iron Suite'i keşfedin
ücretsiz deneme lisansı ile başlayın, değerlendirme süreniz boyunca kısıtlama olmadan dağıtım yapın. Üretim lisanslama seçenekleri ve hacim fiyatlandırması için IronBarcode fiyatlandırma sayfasını ziyaret edin. IronBarcode dokümantasyon portalı ve IronBarcode GitHub deposu ek kod örnekleri ve topluluk desteği sağlar.
Sıkça Sorulan Sorular
MAUI barkod tarayıcısı için IronBarcode kullanmanın avantajı nedir?
IronBarcode, görüntü katmanında barkodları işler, çevrimdışı çalışır, 30'dan fazla formatı destekler ve ek bir yapılandırmaya gerek kalmadan yan eğimli açılar ve zayıf ışık gibi zorlu koşullarla başa çıkar.
IronBarcode tek bir görüntüde birden fazla barkodu tespit edebilir mi?
Evet. BarcodeReaderOptions içinde ExpectMultipleBarcodes = true ayarlayın ve BarcodeReader.ReadAsync çağırın. IronBarcode, sonuç koleksiyonunda tespit edilen tüm barkodları döndürecektir.
MAUI'de Android ve iOS için kamera izinlerini nasıl yapılandırırım?
Android için, AndroidManifest.xml'e CAMERA kullanımı-izin ve kullanım-özelliği öğelerini ekleyin. iOS için, Info.plist'e açıklamayı insan tarafından okunabilir hale getiren NSCameraUsageDescription ekleyin.
IronBarcode çevrimdışı barkod taramayı destekliyor mu?
Evet. IronBarcode, resimleri tamamen cihazda işler ve verileri dış sunuculara göndermez, bu da gizlilik hassasiyetli uygulamalar için önemlidir.
IronBarcode MAUI'de hangi barkod formatlarını destekler?
IronBarcode, QR Kod, Code 128, Code 39, EAN-13, UPC-A, Data Matrix, PDF417, Aztec, MaxiCode ve daha fazlasını destekler. Belirli formatları hedeflemek için BarcodeEncoding bayraklarını kullanabilirsiniz.
Kötü kalitedeki görüntüler için tarama doğruluğunu nasıl artırırım?
Okuma Hızını Ayrıntılı veya Aşırı Ayrıntılı olarak ayarlayın, ImageFilters'a Keskinleştir Filtre ve Kontrast Filtre ekleyin ve yakalanan görüntünün en az 720p çözünürlükte olduğundan emin olun.
IronBarcode, MAUI uygulamasında PDF dosyalarından barkod okuyabilir mi?
Evet. IronBarcode'un BarcodeReader sınıfı, PDF belgelerinde gömülü barkodları aynı şekilde, ReadAsync API kullanarak çıkartabilir.
Kamera erişimi reddedildiginde PermissionException nasıl ele alırım?
try/catch bloğu içine PermissionException yakalayın ve kullanıcının cihaz ayarlarını tekrar etkinleştirebileceği AppInfo.ShowSettingsUI() çağrısını yapın.




