Saltar al pie de página
USANDO IRONQR

Código QR .NET Core: Leer y generar códigos QR en C#

Al crear aplicaciones web o Enterprise en .NET Core, la compatibilidad con códigos QR —para el seguimiento de inventario, flujos de pago o autenticación de dos factores— es un requisito frecuente. En lugar de dedicar ciclos de desarrollo a algoritmos de codificación de bajo nivel, puede recurrir a una biblioteca especializada que gestione todo el flujo de trabajo. IronQR ofrece una solución completa de códigos QR for .NET, que abarca desde la generación básica hasta la lectura basada en aprendizaje automático y la corrección avanzada de errores.

¿Listo para probarlo por ti mismo? Empieza hoy mismo tu prueba gratuita y comprueba lo rápido que puedes añadir la funcionalidad QR a tu proyecto.

NuGet Instalar con NuGet

PM >  Install-Package IronQR

Echa un vistazo a IronQR en NuGet para una instalación rápida. Con más de 10 millones de descargas, está transformando el desarrollo de PDF con C#. También puede descargar el DLL.

¿Cómo se instala la biblioteca de códigos QR?

La instalación de IronQR a través de NuGet se realiza en cuestión de segundos. Abre Visual Studio, ve a Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución, busca IronQR y haz clic en Instalar. El paquete tiene unas dependencias mínimas y está preparado para funcionar en Windows, macOS y Linux desde el primer momento.

Install-Package IronQR

IronQR está destinado a .NET Core 6, 7, 8, 9 y 10, así como a .NET Framework 4.6.2 y versiones posteriores. Para proyectos multiplataforma, una integración de SkiaSharp se encarga del procesamiento de imágenes en entornos de ejecución que no sean Windows. La biblioteca funciona con aplicaciones web ASP.NET Core, aplicaciones de consola y soluciones de escritorio sin necesidad de configuración adicional del tiempo de ejecución. Una vez instalada, todos los métodos de extensión y tipos necesarios están disponibles de inmediato.

¿Cómo se lee un código QR básico a partir de una imagen?

La lectura de datos de códigos QR a partir de archivos de imagen solo requiere unas pocas líneas de código. La clase QrReader utiliza un modelo avanzado de aprendizaje automático que evalúa la calidad de la imagen y selecciona automáticamente el modo de segmento correcto, lo que le proporciona resultados precisos incluso cuando la imagen de entrada no es ideal.

using IronQr;
using IronSoftware.Drawing;

// Load image containing QR code
var inputBmp = AnyBitmap.FromFile("qr-sample.png");
// Create QrImageInput from the bitmap
QrImageInput imageInput = new QrImageInput(inputBmp);
// Initialize QR Reader with ML model
QrReader reader = new QrReader();
// Read and decode all QR codes in the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Output decoded text strings
foreach (var qrCode in results)
{
    Console.WriteLine($"QR Code Value: {qrCode.Value}");
    Console.WriteLine($"URL: {qrCode.Url}");
}
using IronQr;
using IronSoftware.Drawing;

// Load image containing QR code
var inputBmp = AnyBitmap.FromFile("qr-sample.png");
// Create QrImageInput from the bitmap
QrImageInput imageInput = new QrImageInput(inputBmp);
// Initialize QR Reader with ML model
QrReader reader = new QrReader();
// Read and decode all QR codes in the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Output decoded text strings
foreach (var qrCode in results)
{
    Console.WriteLine($"QR Code Value: {qrCode.Value}");
    Console.WriteLine($"URL: {qrCode.Url}");
}
Imports IronQr
Imports IronSoftware.Drawing

' Load image containing QR code
Dim inputBmp = AnyBitmap.FromFile("qr-sample.png")
' Create QrImageInput from the bitmap
Dim imageInput As New QrImageInput(inputBmp)
' Initialize QR Reader with ML model
Dim reader As New QrReader()
' Read and decode all QR codes in the image
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Output decoded text strings
For Each qrCode In results
    Console.WriteLine($"QR Code Value: {qrCode.Value}")
    Console.WriteLine($"URL: {qrCode.Url}")
Next
$vbLabelText   $csharpLabel

Introducir código QR

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 1 - Introducción del código QR

Resultado

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 2 - Ejemplo de resultado de escaneo de un código QR

El método QrReader.Read() procesa el QrImageInput y devuelve un IEnumerable<QrResult>, donde cada resultado contiene el texto descodificado, la URL si se ha codificado alguna, y la posición espacial del símbolo QR en la imagen. La biblioteca admite matrices de bytes, rutas de archivos y objetos AnyBitmap, lo que te ofrece flexibilidad para cualquier arquitectura de proyecto, ya sea que estés leyendo desde un disco, una base de datos o una transmisión de cámara en directo.

El modelo de aprendizaje automático en el que se basa el lector distingue a IronQR de las bibliotecas puramente algorítmicas. Gestiona imperfecciones del mundo real, como el desenfoque de movimiento, la oclusión parcial y la iluminación desigual, sin requerir un preprocesamiento manual ni el ajuste de umbrales.

¿Cómo se extraen los datos de un código QR avanzado?

Más allá de la decodificación básica de valores, IronQR expone coordenadas, segmentos de datos sin procesar e información a nivel de módulo de cada símbolo escaneado. Esto es esencial para los flujos de trabajo de procesamiento de documentos en los que es necesario saber exactamente dónde aparece un código QR en la página, o para aplicaciones que deben gestionar varios códigos en una sola imagen.

using IronQr;
using IronSoftware.Drawing;

var inputBmp = AnyBitmap.FromFile("document-with-qr.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var qrCode in results)
{
    // Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}");
    // Get corner coordinate positions
    foreach (PointF point in qrCode.Points)
    {
        Console.WriteLine($"Position: {point.X}, {point.Y}");
    }
}
using IronQr;
using IronSoftware.Drawing;

var inputBmp = AnyBitmap.FromFile("document-with-qr.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var qrCode in results)
{
    // Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}");
    // Get corner coordinate positions
    foreach (PointF point in qrCode.Points)
    {
        Console.WriteLine($"Position: {point.X}, {point.Y}");
    }
}
Imports IronQr
Imports IronSoftware.Drawing

Dim inputBmp = AnyBitmap.FromFile("document-with-qr.png")
Dim imageInput As New QrImageInput(inputBmp)
Dim reader As New QrReader()
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

For Each qrCode In results
    ' Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}")
    ' Get corner coordinate positions
    For Each point As PointF In qrCode.Points
        Console.WriteLine($"Position: {point.X}, {point.Y}")
    Next
Next
$vbLabelText   $csharpLabel

QR de entrada

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 3 - Introducción del código QR

Resultados de la lectura avanzada de QR

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 4 - Resultados de la extracción avanzada de datos de códigos QR

La colección QrResult.Points contiene las cuatro coordenadas de las esquinas del símbolo QR detectado en el espacio de píxeles. Su aplicación puede utilizarlas para superponer cuadros delimitadores sobre imágenes de documentos, recortar la región del código QR para su posterior procesamiento o pasar los datos de ubicación a un sistema posterior que asigne coordenadas físicas a posiciones lógicas en el documento.

IronQR procesa códigos que contienen logotipos incrustados personalizados, módulos dañados o entradas de baja resolución a través del mismo canal de ML. La biblioteca IronQR no requiere pasos de preprocesamiento separados: la detección y la decodificación se realizan en una sola llamada Read().

¿Cómo afectan los niveles de corrección de errores a la calidad de los códigos QR?

La corrección de errores es el mecanismo que permite a un escáner de códigos QR recuperar los datos originales incluso cuando parte del código está oculto, mal impreso o físicamente dañado. El estándar del código QR define cuatro niveles —Bajo (L), Medio (M), Cuartil (Q) y Alto (H)—, cada uno de los cuales equilibra la capacidad de almacenamiento con la tolerancia a daños.

Nivel Capacidad de recuperación Mejor uso
L ~7% Pantallas digitales nítidas, máxima densidad de datos
M ~15% Aplicaciones generales de impresión
Q ~25% Etiquetas industriales, se espera un desgaste moderado
H ~30% Logotipos incrustados, superficies exteriores o de alto desgaste

Al generar códigos QR, especificar un nivel de corrección de errores más alto garantiza que el resultado se mantenga en condiciones reales de escaneo:

using IronQr;
using IronSoftware.Drawing;

// Configure QR options with high error correction
var qrOptions = new QrOptions(QrErrorCorrectionLevel.High, 20);
// Generate a QR code with specified error correction
QrCode myQr = QrWriter.Write("https://ironsoftware.com", qrOptions);
// Save as PNG image
AnyBitmap qrImage = myQr.Save();
qrImage.SaveAs("high-error-correction-qr.png");
using IronQr;
using IronSoftware.Drawing;

// Configure QR options with high error correction
var qrOptions = new QrOptions(QrErrorCorrectionLevel.High, 20);
// Generate a QR code with specified error correction
QrCode myQr = QrWriter.Write("https://ironsoftware.com", qrOptions);
// Save as PNG image
AnyBitmap qrImage = myQr.Save();
qrImage.SaveAs("high-error-correction-qr.png");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Resultado

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 5 - Código QR generado con alto nivel de corrección de errores

El constructor QrOptions acepta el nivel de corrección de errores y un número de versión máximo. Los códigos de la versión 40 almacenan hasta 7089 caracteres numéricos, mientras que los de la versión 1 solo admiten 41. Establecer una versión máxima inferior limita el tamaño de la salida, lo cual resulta útil cuando se necesitan dimensiones físicas uniformes en todo un lote. Cuanto mayor es el nivel de corrección de errores, más módulos se reservan para la redundancia, lo que reduce la capacidad neta de datos en cualquier versión dada.

La función de tolerancia a fallos de IronQR se complementa con esta propiedad: al leer códigos generados con niveles de corrección más altos, la biblioteca recupera datos de códigos que fallarían por completo con un decodificador puramente algorítmico.

¿Cómo se generan códigos QR con caracteres internacionales?

IronQR es compatible con toda la gama de modos de codificación QR: numérico, alfanumérico, byte y kanji. Para el texto en japonés y otros contenidos Unicode, la biblioteca selecciona automáticamente la codificación que ocupa menos espacio:

using IronQr;
using IronSoftware.Drawing;

// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
// The library selects Kanji mode automatically
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");
using IronQr;
using IronSoftware.Drawing;

// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
// The library selects Kanji mode automatically
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");
Imports IronQr
Imports IronSoftware.Drawing

' Generate QR that encodes Japanese Unicode text
Dim japaneseQr As QrCode = QrWriter.Write("こんにちは世界")
' The library selects Kanji mode automatically
Dim qrImage As AnyBitmap = japaneseQr.Save()
qrImage.SaveAs("japanese-qr.png")
$vbLabelText   $csharpLabel

Salida de código QR

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 6 - Código QR resultante

La codificación Kanji agrupa dos bytes por módulo en lugar de ocho bits, por lo que un código QR en japonés de la misma versión almacena un número significativamente mayor de caracteres que su equivalente en modo byte UTF-8. En el caso de contenido mixto —como una URL seguida de texto en japonés—, IronQR segmenta la entrada y codifica cada segmento en el modo óptimo. No es necesario especificar los límites de los segmentos ni llamar manualmente a los ayudantes de codificación; El proceso de codificación se encarga de esto por ti.

Esta selección automática también incluye marcadores de Interpretación de Canal Extendido (ECI), que indican a los escáneres que se están utilizando conjuntos de caracteres no estándar. Las aplicaciones dirigidas a mercados internacionales pueden pasar cualquier cadena Unicode directamente a QrWriter.Write() sin necesidad de una configuración adicional.

¿Cómo se utilizan los generadores de carga útil para datos QR estructurados?

Un código QR que codifica una URL simple sirve para compartir enlaces de forma sencilla, pero muchas aplicaciones necesitan codificar datos estructurados: credenciales de WiFi, tarjetas de contacto en formato vCard o datos de eventos. Formatear estos datos manualmente es propenso a errores; Un punto y coma que falte o un orden incorrecto de los campos hará que los escáneres malinterpreten los datos.

IronQR proporciona ayudantes de carga útil que construyen estas cadenas estructuradas correctamente:

using IronQr;
using IronSoftware.Drawing;

// Generate QR code with URL payload
var urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
// Save QR as PNG image file
AnyBitmap qrImage = urlQrCode.Save();
qrImage.SaveAs("url-qr-code.png");
Console.WriteLine("QR code generated successfully.");
using IronQr;
using IronSoftware.Drawing;

// Generate QR code with URL payload
var urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
// Save QR as PNG image file
AnyBitmap qrImage = urlQrCode.Save();
qrImage.SaveAs("url-qr-code.png");
Console.WriteLine("QR code generated successfully.");
Imports IronQr
Imports IronSoftware.Drawing

' Generate QR code with URL payload
Dim urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
' Save QR as PNG image file
Dim qrImage As AnyBitmap = urlQrCode.Save()
qrImage.SaveAs("url-qr-code.png")
Console.WriteLine("QR code generated successfully.")
$vbLabelText   $csharpLabel

Código QR creado

Generador de códigos QR .NET Core: Lee y genera códigos QR con solo unas pocas líneas de código: Imagen 7 - Código QR creado a partir de una URL

El método QrWriter.Write() acepta tanto una cadena simple como un objeto de carga útil estructurado. En el caso de las redes WiFi, la carga útil codifica el SSID, la contraseña y el tipo de seguridad en el formato que reconocen los escáneres de Android e iOS. En cuanto a la información de contacto, la salida sigue el estándar MeCard utilizado por la mayoría de los lectores de códigos QR para móviles. La página de la función "Generar" documenta todos los tipos de carga útil compatibles y sus campos obligatorios.

La biblioteca genera imágenes con dimensiones en píxeles configurables. Para su uso en producción, generar códigos con un tamaño mínimo de 200 x 200 píxeles garantiza un escaneo fiable desde las distancias habituales de un smartphone. Los tamaños más grandes resultan ventajosos para aplicaciones en exteriores o impresas en las que la distancia de escaneo supera el metro.

¿Cómo se personaliza el aspecto de los códigos QR?

IronQR te permite controlar el aspecto visual de los códigos generados sin sacrificar la legibilidad. Puede cambiar los colores de primer plano y de fondo, aplicar una imagen de marca personalizada o insertar un logotipo en la zona libre del centro.

using IronQr;
using IronSoftware.Drawing;

// Define custom colors for the QR code
var darkColor = Color.FromArgb(30, 30, 120);   // Deep navy foreground
var lightColor = Color.White;

var options = new QrOptions(QrErrorCorrectionLevel.High, maxVersion: 20)
{
    BackgroundColor = lightColor,
    Color = darkColor,
    // Embed a logo image into the QR center
    Logo = AnyBitmap.FromFile("logo.png")
};

QrCode styledQr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap output = styledQr.Save();
output.SaveAs("branded-qr.png");
using IronQr;
using IronSoftware.Drawing;

// Define custom colors for the QR code
var darkColor = Color.FromArgb(30, 30, 120);   // Deep navy foreground
var lightColor = Color.White;

var options = new QrOptions(QrErrorCorrectionLevel.High, maxVersion: 20)
{
    BackgroundColor = lightColor,
    Color = darkColor,
    // Embed a logo image into the QR center
    Logo = AnyBitmap.FromFile("logo.png")
};

QrCode styledQr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap output = styledQr.Save();
output.SaveAs("branded-qr.png");
Imports IronQr
Imports IronSoftware.Drawing

' Define custom colors for the QR code
Dim darkColor As Color = Color.FromArgb(30, 30, 120) ' Deep navy foreground
Dim lightColor As Color = Color.White

Dim options As New QrOptions(QrErrorCorrectionLevel.High, maxVersion:=20) With {
    .BackgroundColor = lightColor,
    .Color = darkColor,
    ' Embed a logo image into the QR center
    .Logo = AnyBitmap.FromFile("logo.png")
}

Dim styledQr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options)
Dim output As AnyBitmap = styledQr.Save()
output.SaveAs("branded-qr.png")
$vbLabelText   $csharpLabel

La inclusión de un logotipo reduce el área efectiva de datos, por lo que la biblioteca requiere un nivel de corrección de errores H cuando se proporciona un logotipo. La zona tranquila reservada en el centro ocupa aproximadamente el 30 % de la superficie del código, lo que se encuentra dentro de la capacidad de recuperación del nivel H. La biblioteca aplica esta restricción automáticamente: si se establece un nivel de corrección de errores más bajo junto con un logotipo, IronQR genera una excepción con un mensaje descriptivo en lugar de producir un código que se escanea de forma poco fiable.

Para aplicaciones ASP.NET Core, el tutorial del generador de códigos QR de .NET Core muestra cómo servir los códigos QR generados como respuestas de imagen desde una acción del controlador. El flujo de salida escribe directamente en la respuesta sin E/S de archivos intermedios, lo que mantiene baja la latencia para los puntos finales de alto tráfico.

¿Cómo se leen los códigos QR en una aplicación ASP.NET Core?

El escaneo de códigos QR del lado del servidor —a partir de imágenes cargadas, procesos de procesamiento de documentos o sistemas de inspección automatizados— es un caso de uso habitual de la API de lectura. La guía del escáner de códigos QR de ASP.NET cubre la configuración completa del controlador y del servicio, pero el patrón de lectura básico es el mismo que el de una aplicación de consola:

using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/qr")]
public class QrScanController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult Scan(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var bitmap = AnyBitmap.FromStream(stream);
        var imageInput = new QrImageInput(bitmap);
        var reader = new QrReader();
        var results = reader.Read(imageInput);

        var decoded = results.Select(r => new { r.Value, r.Url }).ToList();
        return Ok(decoded);
    }
}
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/qr")]
public class QrScanController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult Scan(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var bitmap = AnyBitmap.FromStream(stream);
        var imageInput = new QrImageInput(bitmap);
        var reader = new QrReader();
        var results = reader.Read(imageInput);

        var decoded = results.Select(r => new { r.Value, r.Url }).ToList();
        return Ok(decoded);
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/qr")>
Public Class QrScanController
    Inherits ControllerBase

    <HttpPost("scan")>
    Public Function Scan(imageFile As IFormFile) As IActionResult
        Using stream = imageFile.OpenReadStream()
            Dim bitmap = AnyBitmap.FromStream(stream)
            Dim imageInput = New QrImageInput(bitmap)
            Dim reader = New QrReader()
            Dim results = reader.Read(imageInput)

            Dim decoded = results.Select(Function(r) New With {Key .Value = r.Value, Key .Url = r.Url}).ToList()
            Return Ok(decoded)
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

El método AnyBitmap.FromStream() acepta cualquier flujo legible, por lo que la misma ruta de código funciona para archivos cargados a través de un formulario, imágenes recuperadas del almacenamiento de blobs o fotogramas extraídos de un canal de vídeo. El controlador no escribe ningún archivo temporal en el disco, lo cual es importante para implementaciones en contenedores donde el sistema de archivos puede ser de solo lectura.

Para escenarios de alto rendimiento, instancie QrReader una vez por ciclo de vida de la aplicación como un singleton, ya que el coste de carga del modelo de ML se paga en la primera construcción. Las llamadas posteriores a Read() en la misma instancia son seguras para subprocesos y comparten el modelo cargado.

¿Cómo se generan códigos QR en una aplicación .NET MAUI?

El tutorial sobre códigos QR de .NET MAUI muestra la generación multiplataforma completa en iOS, Android, macOS y Windows. IronQR utiliza el backend de renderizado SkiaSharp cuando se ejecuta en plataformas que no sean Windows, lo que proporciona un resultado coherente en todos los destinos MAUI.

using IronQr;
using IronSoftware.Drawing;

// Generate QR and convert to a byte array for display in MAUI
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap bitmap = qr.Save();
byte[] imageBytes = bitmap.ExportBytes();

// Bind imageBytes to an <Image Source> in your MAUI page
using IronQr;
using IronSoftware.Drawing;

// Generate QR and convert to a byte array for display in MAUI
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap bitmap = qr.Save();
byte[] imageBytes = bitmap.ExportBytes();

// Bind imageBytes to an <Image Source> in your MAUI page
Imports IronQr
Imports IronSoftware.Drawing

' Generate QR and convert to a byte array for display in MAUI
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim bitmap As AnyBitmap = qr.Save()
Dim imageBytes As Byte() = bitmap.ExportBytes()

' Bind imageBytes to an <Image Source> in your MAUI page
$vbLabelText   $csharpLabel

En dispositivos móviles, ExportBytes() devuelve una matriz de bytes PNG que se puede introducir directamente en un StreamImageSource o escribir en un ImageButton. El andamio MAUI no requiere rutas de código específicas para cada plataforma: la misma lógica de generación se ejecuta de forma idéntica en los cuatro destinos de MAUI.

Para los proyectos VB.NET, la interfaz de la API es idéntica; solo difiere la sintaxis. La biblioteca se distribuye en un único paquete NuGet sin necesidad de un ensamblado VB.NET independiente.

¿Cuales son tus próximos pasos?

IronQR cubre el ciclo de vida completo de los códigos QR en .NET, desde la generación básica y la codificación estructurada de la carga útil hasta la lectura, basada en aprendizaje automático, de códigos dañados o con marca. La biblioteca gestiona la codificación de kanji, la configuración de la corrección de errores y la salida de imágenes multiplataforma, lo que te permite centrarte en la lógica específica de tu aplicación.

Para poner en práctica lo que has aprendido:

Preguntas Frecuentes

¿Qué versiones de .NET admite IronQR ?

IronQR es compatible con .NET Core 6, 7, 8, 9 y 10, así como con .NET Framework 4.6.2 y versiones posteriores. También es compatible con .NET Standard 2.0 y versiones posteriores, lo que lo hace compatible con proyectos de Xamarin, .NET MAUI, Blazor y ASP.NET Core .

¿Cómo leer un código QR de un archivo de imagen en C#?

Cargue la imagen con `AnyBitmap.FromFile()`, pásela a `QrImageInput` y luego llame a `QrReader.Read()`. El método devuelve un `IEnumerable`. " donde cada resultado contiene el valor decodificado, la URL y las coordenadas de las esquinas.

¿Cuáles son los cuatro niveles de corrección de errores del código QR?

Los cuatro niveles son Bajo (L, ~7% de recuperación), Medio (M, ~15%), Cuartil (Q, ~25%) y Alto (H, ~30%). Los niveles superiores añaden módulos de redundancia, lo que reduce la capacidad neta de datos, pero mejora la fiabilidad del escaneo en códigos dañados o parcialmente ocultos.

¿Puede IronQR leer códigos QR que contengan un logotipo o estén parcialmente dañados?

Sí. El modelo de detección impulsado por ML en IronQR maneja códigos parcialmente dañados, logotipos incrustados, desenfoque de movimiento y entradas de baja resolución sin necesidad de preprocesamiento manual.

¿Cómo incrustar un logotipo en un código QR con IronQR?

Establezca la propiedad `Logo` en un objeto `QrOptions` como `AnyBitmap` de la imagen de su logotipo y configure el nivel de corrección de errores en Alto. IronQR aplica esta restricción automáticamente, ya que un logotipo centrado ocupa aproximadamente el 30 % de la superficie del código.

¿ IronQR admite caracteres japoneses y otros caracteres Unicode?

Sí. Pase cualquier cadena Unicode a `QrWriter.Write()` y la biblioteca seleccionará automáticamente el modo Kanji para caracteres japoneses o el modo byte con marcadores ECI para otro contenido Unicode.

¿Cómo generar códigos QR en una aplicación ASP.NET Core ?

Utilice `AnyBitmap.FromStream()` para leer las imágenes cargadas y `QrWriter.Write()` para generar códigos. Devuelva la salida como `FileContentResult` con el tipo MIME `image/png`. Cree una instancia de `QrReader` como singleton para amortizar el coste de carga del modelo de aprendizaje automático.

¿ IronQR es multiplataforma?

Sí. IronQR utiliza un backend de renderizado SkiaSharp en plataformas que no son Windows, lo que proporciona generación y lectura de QR consistente en macOS, Linux, iOS y Android a través de .NET MAUI.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame