Escáner de códigos QR .NET MAUI
Introducción
.NET MAUI (Interfaz de usuario de aplicación multiplaforma .NET) es un marco multiplataforma para construir aplicaciones nativas móviles y de escritorio a partir de una sola base de código C#. Un solo proyecto puede apuntar a Android, iOS, macOS y Windows, compartiendo diseños de interfaz de usuario y lógica de negocio en todas las plataformas. La integración de MAUI con el ecosistema .NET significa que los desarrolladores pueden llegar a los usuarios móviles sin abandonar las herramientas o lenguajes familiares.
En este artículo, explicaremos cómo construir un escáner de códigos QR nativo en una aplicación .NET MAUI utilizando IronQR para decodificar códigos QR seleccionados desde la biblioteca de fotos del dispositivo.
Cómo construir un escáner de códigos QR en .NET MAUI
- Instale la biblioteca C# IronQR para escanear códigos QR en dispositivos móviles
- Diseñe el layout de la aplicación en
MainPage.xaml - Use
FilePickerpara permitir que el usuario seleccione una imagen de código QR desde el dispositivo - Cargue la imagen y envuélvala en un
QrImageInput - Llame a
Ready muestre el valor decodificado en unLabel
IronQR: Biblioteca C# de códigos QR
Para leer códigos QR en la aplicación, utilizaremos la biblioteca IronQR .NET. Proporciona una API sencilla para detectar y decodificar códigos QR de cualquier fuente de imagen, incluidos los archivos seleccionados en un dispositivo móvil. IronQR se ejecuta en todas las plataformas de destino MAUI y no requiere conocimiento previo sobre dominios de códigos de barras para integrar.
IronQR puede decodificar estándares de códigos QR, códigos Micro QR y códigos rMQR, y acepta la entrada de imágenes como archivos, flujos o bitmaps. Se puede instalar en segundos a través del Administrador de Paquetes NuGet.
Pasos para construir un escáner de códigos QR en .NET MAUI
Siga estos pasos para agregar el escaneo de códigos QR a una aplicación .NET MAUI.
Prerrequisitos
- Visual Studio 2022 con la carga de trabajo de .NET MAUI instalada
- Un proyecto de .NET MAUI apuntando a Android o iOS
Instalar IronQR
Instale la biblioteca IronQR usando la Consola del Administrador de Paquetes NuGet en Visual Studio. Navega a Tools > NuGet Package Manager > Package Manager Console y ejecuta:
Install-Package IronQR
Alternativamente, busca IronQR en NuGet e instala la última versión.
Diseño de interfaz
La interfaz del escáner consta de un botón para iniciar la selección de imagen, una vista de imagen para previsualizar el código QR seleccionado y una etiqueta para mostrar el resultado decodificado.
Reemplaza el contenido de MainPage.xaml con lo siguiente:
<?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="MauiQrScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="scanButton"
Text="Select QR Code Image"
SemanticProperties.Hint="Select Image"
Clicked="OnScanButtonClicked"
HorizontalOptions="Center" />
<Image
x:Name="qrImage"
SemanticProperties.Description="Selected QR Code"
HeightRequest="200"
HorizontalOptions="Center" />
<Label
x:Name="resultLabel"
Text="Scanned Text: "
HorizontalOptions="Center"
VerticalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</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="MauiQrScanner.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="scanButton"
Text="Select QR Code Image"
SemanticProperties.Hint="Select Image"
Clicked="OnScanButtonClicked"
HorizontalOptions="Center" />
<Image
x:Name="qrImage"
SemanticProperties.Description="Selected QR Code"
HeightRequest="200"
HorizontalOptions="Center" />
<Label
x:Name="resultLabel"
Text="Scanned Text: "
HorizontalOptions="Center"
VerticalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Entrada de muestra
Use el código QR a continuación como imagen de prueba. Guárdelo en su dispositivo, luego selecciónelo a través del selector de archivos de la aplicación. El valor decodificado debería mostrarse como https://ironsoftware.com.
Código QR de muestra — codifica https://ironsoftware.com
Escaneo de código QR con IronQR
Cuando se toca el botón de escaneo, FilePicker abre la biblioteca de imágenes del dispositivo. Después de que el usuario selecciona una foto, la ruta completa se carga en un AnyBitmap, que se pasa a QrReader.Read(). El valor decodificado del primer código QR detectado se muestra en la etiqueta de resultados.
Añade el siguiente método a MainPage.xaml.cs:
using IronQr;
using IronSoftware.Drawing;
private async void OnScanButtonClicked(object sender, EventArgs e)
{
// Start scanning QR codes
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var imageSource = images.FullPath.ToString();
var inputBmp = AnyBitmap.FromFile(imageSource);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the first result
resultLabel.Text = "Scanned Text: " + results.First().Value;
}
using IronQr;
using IronSoftware.Drawing;
private async void OnScanButtonClicked(object sender, EventArgs e)
{
// Start scanning QR codes
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var imageSource = images.FullPath.ToString();
var inputBmp = AnyBitmap.FromFile(imageSource);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the first result
resultLabel.Text = "Scanned Text: " + results.First().Value;
}
Imports IronQr
Imports IronSoftware.Drawing
Private Async Sub OnScanButtonClicked(sender As Object, e As EventArgs)
' Start scanning QR codes
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim imageSource = images.FullPath.ToString()
Dim inputBmp = AnyBitmap.FromFile(imageSource)
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the first result
resultLabel.Text = "Scanned Text: " & results.First().Value
End Sub
FilePicker.Default.PickAsync es proporcionado por la capa de abstracción de plataforma MAUI y funciona en Android, iOS y Windows sin ningún código específico de la plataforma. AnyBitmap.FromFile maneja la decodificación de imágenes, y QrReader.Read devuelve un IEnumerable<QrResult> con una entrada por cada código QR encontrado en la imagen.
Resultado
Seleccionar una imagen de código QR activa el escaneo. El valor decodificado aparece en la etiqueta de resultados debajo de la previsualización de imagen.
Imagen de código QR seleccionada y valor decodificado mostrado en la etiqueta de resultados
Descargar el Proyecto
Haga clic aquí para descargar el proyecto completo MauiQrScanner.
Conclusión
En este artículo, demostramos cómo construir un escáner de códigos QR nativo en una aplicación .NET MAUI usando IronQR. La API FilePicker proporciona selección de imágenes nativa de la plataforma en Android, iOS y Windows, mientras que QrReader.Read de IronQR maneja la decodificación en una sola llamada. El mismo enfoque se escala a múltiples códigos QR por imagen al iterar sobre la colección completa de resultados en lugar de llamar a .First().
IronQR requiere una licencia para desarrollo y uso comercial. Los detalles de licenciamiento están disponibles aquí.
Para una visión más profunda en la lectura de propiedades de código QR más allá del valor, consulte las guías Leer valor de código QR y Leer tipo de código QR.
Preguntas Frecuentes
¿De qué trata el Tutorial del Escáner de Código QR de .NET MAUI?
El Tutorial del Escáner de Código QR de .NET MAUI proporciona orientación para construir un escáner de código QR utilizando IronQR, con instrucciones adaptadas para aplicaciones .NET MAUI en plataformas Android, iOS y Windows.
¿Qué plataformas son compatibles con el Escáner de Código QR de .NET MAUI?
El Escáner de Código QR de .NET MAUI es compatible con las plataformas Android, iOS y Windows, permitiendo a los desarrolladores crear aplicaciones multiplataforma usando IronQR.
¿Cómo puedo seleccionar imágenes para escanear códigos QR en una aplicación .NET MAUI?
Puede utilizar el componente FilePicker en una aplicación .NET MAUI para seleccionar imágenes, que luego pueden ser procesadas por el método QrReader.Read() de IronQR para decodificar códigos QR.
¿Qué función se utiliza para decodificar códigos QR en el tutorial?
En el tutorial, se utiliza la función QrReader.Read() de IronQR para decodificar códigos QR a partir de imágenes seleccionadas en una aplicación .NET MAUI.
¿Puedo usar IronQR para escanear códigos QR en una aplicación multiplataforma?
Sí, IronQR está diseñado para ser utilizado en aplicaciones multiplataforma, y con el framework .NET MAUI, puede crear escáneres de código QR para Android, iOS y Windows.
¿Existe una función específica para lectores de código QR for .NET MAUI?
Sí, el tutorial demuestra cómo usar la función QrReader.Read() de IronQR dentro de una aplicación .NET MAUI para leer y decodificar códigos QR.
¿IronQR soporta el escaneo de códigos QR en dispositivos móviles?
IronQR soporta la escaneo de códigos QR en dispositivos móviles, incluyendo Android e iOS, como se demuestra en el Tutorial del Escáner de Código QR de .NET MAUI.
¿Cuál es el papel de FilePicker en el proceso de escaneo de códigos QR?
FilePicker se utiliza para seleccionar imágenes del almacenamiento del dispositivo, que luego se pasan al método QrReader.Read() de IronQR para la decodificación de códigos QR en una aplicación .NET MAUI.
¿Es posible integrar un escáner de código QR en una aplicación de Windows usando .NET MAUI?
Sí, el Tutorial del Escáner de Código QR de .NET MAUI muestra cómo integrar un escáner de código QR en una aplicación de Windows usando IronQR.

