MAUI バーコードスキャナー(IronBarcode搭載): ステップバイステップガイド
モバイルアプリケーションは、在庫管理、POSシステム、製品追跡において、バーコードスキャンへの依存度を高めている。 .NET MAUIアプリケーションにバーコード検出を統合し、カメラフィードと画像ファイル処理を組み合わせてQRコード、データマトリックス、その他のバーコードフォーマットを検出するMAUIバーコードスキャナーを構築します。 多くのライブラリがカメラプレビューに重点を置いているのに対し、 IronBarcodeは、斜めの角度、劣悪な照明、破損したラベルなど、困難な条件下でもバーコードを正確に読み取ることに優れており、特別な設定なしでそれらすべてに対応します。
このガイドでは、 IronBarcodeを使用して.NET MAUIプロジェクトにバーコード スキャンを実装するすべての手順を説明します。 最終的には、1つの画像ファイルから複数のバーコードをスキャンしたり、デバイスのカメラからバーコードをキャプチャしたり、ライブラリを自信を持って独自のクロスプラットフォームプロジェクトに統合したりできるようになります。
MAUIバーコードスキャナーを構築するための前提条件は何ですか?
始める前に、開発環境が整っていることを確認してください。
- .NET MAUIワークロードがインストールされたVisual Studio 2022 (v17.8以降)
- .NET 10 SDK --公式.NETサイトからダウンロード -基本的なC#の知識― async/awaitパターンに精通していると役立ちます
- カメラテスト用に構成された物理デバイスまたはエミュレータ
- IronBarcodeライセンス-無料トライアルで評価できます
プロジェクトを作成する前にVisual StudioにMAUIワークロードがインストールされていることを確認しておくと、後々のトラブルシューティングにかかる時間を大幅に節約できます。 Visual Studioインストーラーの"個別コンポーネント"で".NETマルチプラットフォームアプリUI開発"を検索することで、このことを確認できます。
IronBarcodeがMAUIにどのように適合するかを理解する
.NET MAUIは、Android、iOS、macOS、Windowsをターゲットとする単一のコードベースを提供します。 この環境におけるバーコードスキャンの課題は、各プラットフォームがカメラへのアクセスを異なる方法で処理することである。 MAUIのMediaPickerで画像をキャプチャし、IronBarcodeにバイトを渡して分析します。
このように関心を分離することで、コードが簡潔に保たれ、プラットフォーム固有のバーコードSDKを使用する必要がなくなります。 IronBarcodeのオフライン処理モデルは、バーコードデータがデバイスから外部に持ち出されないことを意味し、規制対象業界のアプリケーションにとって重要な意味を持つ。
サポートされているバーコードフォーマット
IronBarcodeは、以下を含む幅広いフォーマットを読み取ります。
| フォーマットカテゴリ | フォーマット | 一般的な使用例 |
|---|---|---|
| 1D線形 | コード128、コード39、EAN-13、UPC-A、ITF | 小売、物流、ヘルスケア |
| 2次元行列 | QRコード、データマトリックス、アステカ文字、PDF417 | モバイル決済、チケット販売、製造業 |
| 郵便 | USPS、ロイヤルメール、ドイツポスト | 配送および郵便サービス |
| 専門 | MaxiCode、GS1、MicroPDF417 | サプライチェーン、輸送、小包 |
MAUIバーコードスキャンプロジェクトの設定方法を教えてください。
まず、Visual Studio 2022で新しい.NET MAUIアプリ・プロジェクトを作成します。名前を@--CODE-42438--@@とし、ターゲットフレームワークとして.NET 10を選択します。 Visual Studioは、Android、iOS、macOS、Windowsそれぞれに対応したプラットフォーム固有のフォルダを含む、標準的なMAUIプロジェクト構造を生成します。
NuGet経由でIronBarcodeをインストールする
NuGetパッケージ マネージャー コンソールを開き、次を実行します。
Install-Package BarCode
または、ソリューション・エクスプローラーでプロジェクトを右クリックし、"Manage NuGet Packages "を選択して、IronBarCodeを検索し、最新の安定版をインストールしてください。 特に.NET MAUIプロジェクトの場合、IronBarcodeのNuGetパッケージには必要なネイティブ依存関係がすべて含まれています。
ライセンスの有効化
インストール後、アプリケーションのライフサイクルの早い段階で、ライセンスキーを使用してIronBarcodeをアクティベートしてください。 最適な場所は、アプリ・ビルダーが実行される前のMauiProgram.csです:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
IronSoftwareのウェブサイトから無料のトライアルライセンスキーを入手してください。トライアルキーを使用すると、開発期間中に時間制限なくすべての機能を評価できますが、正式なライセンスを適用するまでは、出力にトライアル版の透かしが表示される場合があります。
AndroidとiOSでカメラの権限を設定するにはどうすればいいですか?
プラットフォーム固有のカメラ権限はバーコードスキャン機能に不可欠です。 各プラットフォームは、MediaPicker.CapturePhotoAsync()が成功する前に、そのマニフェストファイルに特定の設定を必要とします。
Androidの権限
カメラへのアクセスを宣言するために、Platforms/Android/AndroidManifest.xml@を編集してください:
<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" />
CODE-42443--@@@エントリは、ユーザーに実行許可を要求します。 CODE-42444--@@@宣言は、Google Playストアに、あなたのアプリにはカメラのハードウェアとオートフォーカス機能が必要であることを通知します。 これらがなければ、Android端末は権限要求を許可しても、内部的にカメラへのアクセスをブロックしてしまう可能性があります。
Android 13以降(APIレベル33以上)では、ActivityCompat.RequestPermissionsを使用して、MainActivity.csできめ細かなメディアパーミッションを処理する必要があるかもしれません。 MAUIMediaPicker抽象化は、この大部分を自動的に処理しますが、リリース前に物理的なデバイステストを行うことを推奨します。
iOSの権限
CODE-42448--@@を修正し、カメラの使用説明を含める:
<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では、プライバシーに関わるすべての権限について、人間が理解できる説明が求められます。 この説明文が欠落しているか曖昧な場合、AppleのApp Storeの審査プロセスでアプリは却下されます。 このテキストは、アプリが初めてカメラへのアクセスを要求する際にユーザーに表示されるシステム権限ダイアログに表示されます。
iPadOSの場合、ライブカメラに加えて、保存した写真からバーコードをスキャンさせることを計画している場合は、NSPhotoLibraryUsageDescriptionの追加も検討してください。
WindowsとmacOS
WindowsデスクトップおよびmacOSを対象とする場合、カメラへのアクセス権限は、それぞれアプリケーションマニフェストおよびエンタイトルメントファイルを通じて管理されます。 MAUIフレームワークは、テンプレート・レベルでこの大部分を処理しますが、WindowsのPackage.appxmanifestにウェブカメラ・デバイス機能が含まれていることを確認してください。
バーコードスキャナーのインターフェースはどのように作成しますか?
CODE-42451のユーザーインターフェイスをデザインしてください。 最小限ながら機能的なレイアウトには、画像プレビュー、結果表示エリア、スキャン開始ボタンが含まれています。
<?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>
このレイアウトでは、カメラで新しい写真を撮影する操作と、ギャラリーから既存の画像を選択する操作の2つのスキャンパスが提供されます。 これは、ユーザーが事前にバーコードを撮影したり、電子メールで画像を受信したりするワークフローにおいて重要となる。 CODE-42452は、検出されたBarCodeフォーマットをデコードされた値と一緒に表示するため、デバッグやユーザー検証の際に役立ちます。
スキャンステータスフィードバックの追加
洗練された体験のために、スキャンボタンをActivityIndicatorで囲み、処理中に表示することを検討してください。 IronBarcodeの非同期APIを使えば、IsRunning = trueをBarcodeReader.ReadAsyncを呼び出す前に設定し、finallyブロックでリセットすることができます。
バーコードリーダー機能はどのように実装しますか?
CODE-42457のスキャンロジックを実装してください。 以下のコードは、適切な非同期パターンとエラー処理を用いて、カメラのキャプチャとギャラリーの選択の両方を処理します。
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
この実装では、カメラパスとギャラリーパスの間で画像処理ロジックが重複しないように、共有ヘルパーメソッド ScanFromSource を使用しています。 このメソッドは、JPEG、PNG、WebP、その他の一般的な画像フォーマットを自動的に処理します。
結果オブジェクトは、他のプロパティの中で、first.Value(デコードされた文字列)、first.BarcodeType(フォーマット列挙型)、および@@--CODE-42462--@(検出されたバーコード領域の切り抜き画像)を公開します。 完全なリストについては、 BarcodeResult クラスのドキュメントを参照してください。
スキャン実装のテスト
コードが設定されていれば、標準バーコードに対してテストを行うことができます。

スキャン後、デコードされた値が画面に表示されます。

高度なスキャンオプションはどのように設定するのですか?
IronBarcodeはBarcodeReaderOptions@オブジェクトを公開しており、特定のユースケースに合わせて検出動作を微調整することができます。 これらのオプションを理解することで、アプリケーションのニーズに基づいて、速度と精度とのバランスを取ることができます。
特定のバーコードタイプを対象とする
想定されるバーコードの種類を正確に指定することで、 IronBarcodeは不要なフォーマットチェックをスキップするため、処理時間を大幅に短縮できます。
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)
How to Create a MAUI Barcode Scanner Using IronBarcode:図4 - 同じ画像から複数のコードをスキャンする
CODE-42464--@@を設定すると、IronBarcodeは最初の結果を見つけた後もスキャンを継続するように指示します。
読書速度オプション
CODE-42465--@@列挙には4つのレベルがあります:CODE-42466--@、@--CODE-42467--@、@--CODE-42468--@、@--CODE-42469--@です。 BarCode-42470--@@ は、バーコードがきれいでよく照らされる大量のシナリオに使用してください。 低解像度のカメラキャプチャや部分的に破損したラベルからスキャンする場合は、DetailedまたはExtremeDetailに切り替えてください。
画像補正フィルターや信頼度閾値など、 BarcodeReaderOptions の調整方法の詳細については、ドキュメントに詳細な例が記載されています。
画像補正と前処理
IronBarcodeには、回転、傾き、または照明不足のバーコードを自動的に補正する画像補正機能が内蔵されています。 また、BarcodeReaderOptions.ImageFiltersを通じて、前処理フィルタを手動で適用することもできます:
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)
}
}
前処理フィルターは、アプリケーションが低品質のカメラセンサーを搭載した古いAndroidデバイスを対象とする場合や、ユーザーが倉庫や屋外環境など、最適な照明条件ではない場所でバーコードを撮影する可能性が高い場合に特に役立ちます。
よくあるトラブルシューティングのシナリオにはどのように対処しますか?
適切に設定されたMAUIバーコードスキャナーであっても、デバイス固有の動作、画像品質の問題、またはプラットフォームの制約によって問題が発生する可能性があります。
カメラが開かない
カメラの起動に失敗する場合は、AndroidManifest.xmlとInfo.plistの両方でパーミッションが正しく宣言されていることを確認してください。 その後、ホットリロードではなく、クリーンビルドからアプリを再デプロイしてください。 Androidの場合、テストデバイスが標準以外のカメラ構成を使用しているかどうかも確認してください。複数のカメラを搭載した一部のデバイスでは、レンズを明示的に選択する必要があります。
シミュレータでは、MediaPicker.CapturePhotoAsync()はサポートされていません。 カメラの機能は必ず実機でテストしてください。エミュレータはギャラリー選択用のPickPhotoAsyncをサポートしており、あらかじめロードされた画像を使った基本的なUIテストに使用できます。
スキャン精度が低い
IronBarcodeが結果を返さない、または誤った値を返す場合は、以下の調整を試してください。
- CODE-42478--@を@@--CODE-42479--@または@@--CODE-42480--@に増やしてください。
- CODE-42481--@@と
ContrastFilterを画像フィルターパイプラインに追加する。 キャプチャ画像の解像度が720p以上であることを確認してください。解像度が低いと、データマトリックスなどの高密度フォーマットで検出漏れが発生する可能性があります。 - バーコードタイプが
ExpectBarcodeTypes@マスクに含まれているかどうかを確認してください。
IronBarcodeのトラブルシューティングガイドには、フォーマット固有の問題に対する追加の診断手順が記載されています。
メモリ管理
大きなカメラ画像は、MemoryStream@に読み込まれると、かなりのメモリを消費します。 廃棄を確実にするために、すべてのストリーム・オブジェクトに必ず using ステートメントを使用してください。 ユーザーが複数のアイテムを順番にスキャンする連続スキャンワークフローの場合、ガベージコレクタを待つのではなく、処理後に明示的にbitmap.Dispose()も呼び出します。
ヒープ領域が限られているAndroidデバイスでは、スキャン対象のバーコードが鮮明でコントラストが高く、正確なデコードにフル解像度を必要としない場合は、画像をダウンサンプリングしてからIronBarcodeに渡すことを検討してください。
プラットフォーム固有のiOSの動作
iOSでは、アプリが初めてカメラのアクセス許可を要求すると、システムは一度だけダイアログを表示します。 ユーザーが否定した場合、それ以降CapturePhotoAsyncを呼び出すと、PermissionExceptionがスローされます。 この場合、AppInfo.ShowSettingsUI()でできる"設定"にユーザーを誘導することで対処してください。
App Storeに提出する前に、NSCameraUsageDescription@がInfo.plist@に存在することを確認してください。 プライバシーに関する文字列が欠落している場合、審査チームからの詳細な説明なしに自動的に却下されます。 カメラへのアクセスに関するAppleのヒューマンインターフェースガイドラインを参照して、アクセス許可要求のタイミングとメッセージングに関するベストプラクティスを確認してください。
次のステップは何ですか?
IronBarcodeで動作するMAUIバーコードスキャナーが使えるようになったので、アプリケーションの要件に応じていくつかの選択肢があります。
-バーコードの生成-- IronBarcodeには、文字列データからQRコード、Code 128ラベル、その他の形式のバーコードを作成するためのバーコード生成APIが含まれています。
- バッチスキャン -- 複数の画像ファイルをループで処理します; バッチスキャンの例を参照してください
- PDFバーコード抽出 -- IronBarcodeは同じ@--CODE-42494--@@クラスを使ってPDFドキュメントに埋め込まれたバーコードを読み取ることができます; PDF形式のバーコード読み取りに関するドキュメントをご覧ください。 -スタイル設定とブランディング- 生成されたバーコードの視覚的な出力を、色、ロゴ、注釈でカスタマイズします。 バーコードのスタイル設定オプションを参照してください -その他のIronSoftware製品-- MAUIアプリでPDF生成、OCR、スプレッドシートのサポートも必要な場合は、一貫したクロスプラットフォーム機能を提供するIron Suite全体を検討してください。
無料トライアルライセンスから始めて、評価期間中は制限なく導入できます。 生産ライセンスのオプションとボリュームディスカウントについては、 IronBarcodeの価格ページをご覧ください。 IronBarcodeのドキュメントポータルとIronBarcodeのGitHubリポジトリには、追加のコード例とコミュニティサポートが掲載されています。
よくある質問
MAUIのバーコードスキャナーにIronBarcodeを使用する利点は何ですか?
IronBarcode は、イメージ レイヤーでバーコードを処理し、オフラインで動作し、30 を超える形式をサポートし、追加の構成なしで、斜めの角度や照明不足などの困難な条件に対処します。
IronBarcode は1 つの画像内の複数のバーコードを検出できますか?
はい。BarcodeReaderOptions で ExpectMultipleBarcodes = true を設定し、BarcodeReader.ReadAsync を呼び出します。IronBarcodeは検出されたすべてのバーコードを結果コレクションに返します。
MAUI で Android と iOS のカメラ権限を設定するにはどうすればよいですか?
Androidの場合は、AndroidManifest.xmlにCAMERAのuses-permission要素とuses-feature要素を追加します。iOSの場合は、Info.plistにNSCameraUsageDescriptionと人間が読める形式の説明を追加します。
IronBarcode はオフラインのバーコードスキャンをサポートしていますか?
はい。IronBarcodeは、データを外部サーバーに送信せずに、画像を完全にデバイス上で処理します。これは、プライバシーを重視するアプリケーションにとって重要です。
MAUI でIronBarcodeがサポートしているバーコード形式はどれですか?
IronBarcodeは、QRコード、Code 128、Code 39、EAN-13、UPC-A、Data Matrix、PDF417、Aztec、MaxiCodeなど、多数のコードをサポートしています。BarcodeEncodingフラグを使用して、特定のフォーマットを指定することもできます。
品質の悪い画像のスキャン精度を向上させるにはどうすればよいですか?
ReadingSpeed を Detailed または ExtremeDetail に切り替え、SharpenFilter と ContrastFilter を ImageFilters に追加し、キャプチャした画像の解像度が少なくとも 720p であることを確認します。
IronBarcode はMAUI アプリで PDF ファイルからバーコードを読み取ることができますか?
はい。IronBarcode の BarcodeReader クラスは、画像ファイルに使用されるのと同じ ReadAsync API を使用して、PDF ドキュメントに埋め込まれたバーコードを抽出できます。
カメラへのアクセスが拒否された場合、PermissionException をどのように処理すればよいですか?
try/catch ブロックで PermissionException をキャッチし、AppInfo.ShowSettingsUI() を呼び出して、ユーザーをデバイス設定に誘導し、カメラ アクセスを再度有効にできるようにします。



