Generador y Lector de Códigos QR .NET Core | IronQR
Crear un generador de códigos QR en .NET Core es sencillo cuando se elige la biblioteca adecuada. Al evaluar los requisitos de un generador de códigos QR, los desarrolladores buscan un equilibrio entre facilidad de uso y funciones avanzadas opcionales. Ya sea para crear aplicaciones web ASP.NET Core o herramientas de consola, los desarrolladores necesitan una biblioteca fiable que gestione todo, desde la creación básica de códigos QR hasta la personalización avanzada.
IronQR ofrece una potente solución para .NET Core que admite la codificación de cadenas de texto, URL y texto Unicode en japonés. Mientras que algunos pueden buscar inicialmente una biblioteca de código abierto .NET como la biblioteca QRCoder (conocida por su licencia MIT permisiva), IronQR proporciona una alternativa de nivel empresarial con capacidades de aprendizaje automático y soporte dedicado.
Este tutorial muestra cómo generar códigos QR, configurar niveles de corrección de errores y leer códigos existentes mediante detección basada en aprendizaje automático, todo ello dentro de sus proyectos .NET Core.
Comience a utilizar IronQR hoy mismo mediante una prueba gratuita.
¿Cómo instalar una biblioteca de códigos QR en .NET Core?
Para empezar, abra Visual Studio y haga clic en el botón Crear para iniciar un nuevo proyecto. Una vez asignado el nombre del proyecto, la instalación de la biblioteca a través del gestor de paquetes NuGet se realiza en cuestión de segundos. Mientras que algunos desarrolladores podrían buscar el paquete NuGet de QRCoder, usted puede instalar el framework IronQR ejecutando el siguiente comando en la consola del gestor de paquetes:
Install-Package IronQR
También puede utilizar la interfaz de usuario del gestor de paquetes NuGet buscando "IronQR" y haciendo clic en el botón de instalación. La biblioteca ofrece una implementación .NET compatible con .NET Core 3.x, .NET 5, 6, 7, 8, 9 y 10, lo que la hace ideal para el desarrollo web moderno y los proyectos multiplataforma.
Tras la instalación, añada las directivas using necesarias en la parte superior de su archivo. IronQR se integra con IronSoftware.Drawing para el manejo de imágenes multiplataforma, eliminando la necesidad de dependencias específicas de la plataforma como System.Drawing.Common, que quedó obsoleta para el uso multiplataforma en .NET 6 y posteriores.
Puede verificar que la instalación se ha realizado correctamente comprobando las referencias de los paquetes de su proyecto en el archivo .csproj o confirmando que el paquete NuGet aparece en la salida de la consola del Administrador de paquetes. Una vez instalada, la referencia de la API de IronQR estará disponible de inmediato.
¿Cómo se genera un código QR?
La clase QrWriter, que a menudo se utiliza junto con prácticos métodos de extensión, facilita la generación de códigos QR. A continuación se muestra el código fuente de un ejemplo completo que utiliza sentencias de nivel superior para generar un código QR en tan solo unas pocas líneas de código:
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from input text
QrCode qrcode = QrWriter.Write("https://ironsoftware.com");
// Save as PNG image
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("website-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from input text
QrCode qrcode = QrWriter.Write("https://ironsoftware.com");
// Save as PNG image
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("website-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate a QR code from input text
Dim qrcode As QrCode = QrWriter.Write("https://ironsoftware.com")
' Save as PNG image
Dim qrImage As AnyBitmap = qrcode.Save()
qrImage.SaveAs("website-qr.png")
Resultado
El método QrWriter.Write() procesa los datos en QrCodeData, que contiene los módulos en bruto (los cuadrados blancos y negros) del símbolo QR. IronQR utiliza generadores internos de carga útil para garantizar que el texto de entrada se codifica de forma eficiente para datos numéricos, cadenas de texto alfanuméricas o matrices de bytes.
La clase AnyBitmap de IronSoftware.Drawing permite guardar imágenes en varias plataformas, por lo que el mismo código funciona en Windows, macOS y Linux sin modificaciones. Puedes ahorrar el resultado como PNG, JPEG u otros formatos compatibles, dependiendo de tu caso de uso.
Para ver una demostración práctica, consulte la página de ejemplo de generación de códigos QR, que muestra opciones de configuración adicionales junto con el flujo de trabajo básico de generación.
¿Qué son los niveles de corrección de errores y por qué son importantes?
La corrección de errores determina cuánto daño puede sufrir un símbolo QR sin dejar de ser escaneable. Se trata de una de las características avanzadas opcionales que permite la creación de marca y la durabilidad. La norma sobre códigos QR (ISO/IEC 18004) define cuatro niveles de corrección de errores, cada uno de los cuales sacrifica capacidad de datos a cambio de resiliencia.
| Nivel | Recuperación de datos | Mejor para |
|---|---|---|
| L (Bajo) | ~7 % | Pantallas digitales nítidas |
| M (Medio) | ~15 % | Uso general |
| Q (Cuartil) | ~25 % | Materiales impresos |
| H (Alta) | ~30 % | Entornos hostiles, superposición de logotipos |
Configure la corrección de errores utilizando QrOptions:
using IronQr;
using IronSoftware.Drawing;
// Configure with high error correction level
var options = new QrOptions(QrErrorCorrectionNivel.High, 20);
// Generate QR code with options
QrCode qrcode = QrWriter.Write("Product-12345", options);
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("product-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Configure with high error correction level
var options = new QrOptions(QrErrorCorrectionNivel.High, 20);
// Generate QR code with options
QrCode qrcode = QrWriter.Write("Product-12345", options);
AnyBitmap qrImage = qrcode.Save();
qrImage.SaveAs("product-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Configure with high error correction level
Dim options As New QrOptions(QrErrorCorrectionNivel.High, 20)
' Generate QR code with options
Dim qrcode As QrCode = QrWriter.Write("Product-12345", options)
Dim qrImage As AnyBitmap = qrcode.Save()
qrImage.SaveAs("product-qr.png")
Resultado QR
El segundo parámetro especifica el número máximo de versión permitido, controlando el tamaño y la capacidad de datos del código QR. Una mayor corrección de errores es esencial cuando se añade una imagen de logotipo o para escenarios de desgaste físico.
Cuando planees superponer un logotipo sobre un código QR, utiliza siempre el nivel H. La redundancia adicional compensa los módulos ocultos por el logotipo, lo que permite que el código sea fácil de leer. La documentación sobre corrección de errores de IronQR explica cómo la selección de la versión interactúa con la capacidad de datos y el nivel de corrección.
¿Cómo personalizar la apariencia del código QR con logotipo y colores?
QrStyleOptions de IronQR permite generar códigos QR alineados con la marca, con colores, dimensiones y logotipos incrustados personalizados. Esto resulta especialmente útil para materiales de marketing, embalajes de productos y entradas para eventos, donde la coherencia visual es importante.
using IronQr;
using IronSoftware.Drawing;
var styleOptions = new QrStyleOptions
{
Dimensions = 300,
Margins = 10,
Color = Color.DarkBlue,
Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("company-logo.png") }
};
QrCode qrcode = QrWriter.Write("https://yourcompany.com");
AnyBitmap qrImage = qrcode.Save(styleOptions);
qrImage.SaveAs("branded-qr.png");
using IronQr;
using IronSoftware.Drawing;
var styleOptions = new QrStyleOptions
{
Dimensions = 300,
Margins = 10,
Color = Color.DarkBlue,
Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("company-logo.png") }
};
QrCode qrcode = QrWriter.Write("https://yourcompany.com");
AnyBitmap qrImage = qrcode.Save(styleOptions);
qrImage.SaveAs("branded-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
Dim styleOptions As New QrStyleOptions With {
.Dimensions = 300,
.Margins = 10,
.Color = Color.DarkBlue,
.Logo = New QrLogo With {.Bitmap = AnyBitmap.FromFile("company-logo.png")}
}
Dim qrcode As QrCode = QrWriter.Write("https://yourcompany.com")
Dim qrImage As AnyBitmap = qrcode.Save(styleOptions)
qrImage.SaveAs("branded-qr.png")
Código QR estilizado
La propiedad Dimensions establece el tamaño de la imagen de salida en píxeles. La propiedad Margins controla la zona de silencio: el borde en blanco alrededor del código QR que los escáneres necesitan para identificar correctamente el límite del símbolo. La guía de personalización de códigos QR incluye propiedades de estilo adicionales, como el color de fondo y las opciones de forma de los módulos.
Al insertar un logotipo, este no debe ocupar más del 30 % de la superficie total del código QR. Superar este umbral puede comprometer la legibilidad incluso en la corrección de nivel H. Es recomendable realizar pruebas con varias aplicaciones de escáner de códigos QR tras la personalización.
¿Cómo generar códigos QR en ASP.NET Core?
La integración de la generación de códigos QR en ASP.NET Core sigue el patrón Modelo Vista Controlador. He aquí una implementación de clase HomeController que devuelve una imagen de código QR directamente desde un método de acción:
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace Examples
{
public class HomeController : Controller
{
public IActionResult GenerateQR(string content)
{
QrCode myQr = QrWriter.Write(content);
AnyBitmap qrImage = myQr.Save();
byte[] imageBytes = qrImage.ExportBytes();
return File(imageBytes, "image/png");
}
}
}
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace Examples
{
public class HomeController : Controller
{
public IActionResult GenerateQR(string content)
{
QrCode myQr = QrWriter.Write(content);
AnyBitmap qrImage = myQr.Save();
byte[] imageBytes = qrImage.ExportBytes();
return File(imageBytes, "image/png");
}
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace Examples
Public Class HomeController
Inherits Controller
Public Function GenerateQR(content As String) As IActionResult
Dim myQr As QrCode = QrWriter.Write(content)
Dim qrImage As AnyBitmap = myQr.Save()
Dim imageBytes As Byte() = qrImage.ExportBytes()
Return File(imageBytes, "image/png")
End Function
End Class
End Namespace
Este endpoint acepta datos de código QR como parámetro y devuelve directamente la imagen PNG generada. El enfoque funciona tanto con proyectos de ASP.NET Core Web API como con vistas Razor.
Para las aplicaciones ASP.NET Core de producción, considere el almacenamiento en caché de los códigos QR generados con frecuencia utilizando IMemoryCache o IDistributedCache para reducir la sobrecarga de la CPU. Los códigos QR para URL estáticas, identificadores de productos o enlaces a eventos no cambian entre solicitudes y son candidatos ideales para el almacenamiento en caché.
También puede integrar IronQR en un punto final de la API Minimal. El tutorial de integración de .NET Core ofrece un ejemplo completo que incluye patrones de inyección de dependencias y cómo servir imágenes de códigos QR desde un componente Blazor.
El registro de la clave de licencia de IronQR en Program.cs utilizando el patrón de declaración de nivel superior mantiene limpia la configuración de inicio:
using IronQr;
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY";
using IronQr;
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronQr
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY"
Configure la clave de licencia antes de llamar a cualquier método de IronQR. Durante el desarrollo, puede aplicar una clave de prueba gratuita obtenida en la página de licencias de IronQR.
¿Cómo se codifica el texto Unicode japonés?
IronQR admite la codificación de texto Unicode japonés a través del modo Kanji, que codifica de forma eficiente los caracteres Unicode japoneses utilizando menos segmentos de datos que la codificación estándar. Esto reduce la versión (tamaño) del código QR para el mismo contenido, lo que da como resultado un símbolo menos complejo que se escanea más rápido.
using IronQr;
using IronSoftware.Drawing;
// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
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("こんにちは世界");
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("こんにちは世界")
Dim qrImage As AnyBitmap = japaneseQr.Save()
qrImage.SaveAs("japanese-qr.png")
Resultado
La biblioteca selecciona automáticamente el modo Kanji cuando detecta caracteres japoneses, optimizando la capacidad de datos del código QR sin necesidad de configurar manualmente los segmentos de datos. Esto es importante para aplicaciones dirigidas a usuarios de habla japonesa, como plataformas de comercio electrónico, menús de restaurantes o quioscos de información turística.
El modo Kanji codifica caracteres del conjunto de caracteres Shift JIS. Si su aplicación procesa texto tanto en japonés como en alfabeto latino en la misma cadena, IronQR gestiona el cambio de modo internamente, seleccionando la codificación más eficiente para cada segmento. En cuanto a las mejores prácticas de internacionalización en .NET, la documentación de globalización de Microsoft ofrece información útil sobre la codificación de caracteres.
¿Cómo leer códigos QR con aprendizaje automático?
IronQR se distingue por su lector de códigos QR basado en el aprendizaje automático. El modelo de aprendizaje automático alcanza una alta precisión incluso al leer códigos QR desde ángulos o en imágenes parcialmente ocultas, lo que supone una ventaja significativa frente a los algoritmos de detección tradicionales basados en umbrales que se utilizan en muchas alternativas de código abierto.
using IronQr;
using IronSoftware.Drawing;
// Load image containing QR code
AnyBitmap inputBmp = AnyBitmap.FromFile("scanned-document.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
// Read with ML-powered detection
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var result in results)
{
Console.WriteLine($"Found: {result.Value}");
}
using IronQr;
using IronSoftware.Drawing;
// Load image containing QR code
AnyBitmap inputBmp = AnyBitmap.FromFile("scanned-document.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
// Read with ML-powered detection
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var result in results)
{
Console.WriteLine($"Found: {result.Value}");
}
Imports IronQr
Imports IronSoftware.Drawing
' Load image containing QR code
Dim inputBmp As AnyBitmap = AnyBitmap.FromFile("scanned-document.png")
Dim imageInput As New QrImageInput(inputBmp)
' Read with ML-powered detection
Dim reader As New QrReader()
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
For Each result In results
Console.WriteLine($"Found: {result.Value}")
Next
Salida de lectura de código QR
El objeto QrResult contiene el valor descodificado junto con los metadatos de posición, que puede utilizar para resaltar la región de código QR detectada en superposiciones de interfaz de usuario o canalizaciones de procesamiento de documentos. Esta capacidad hace que IronQR sea ideal para sistemas de procesamiento de documentos y gestión de inventario.
El modelo de aprendizaje automático se ejecuta íntegramente en el dispositivo sin necesidad de llamadas a la API en la nube, lo que lo hace adecuado para entornos aislados y aplicaciones sin conexión. Los detectores tradicionales basados en CV, como ZXing.NET, funcionan bien con códigos limpios y orientados hacia delante, pero a menudo tienen dificultades con condiciones del mundo real como reflejos, rotaciones o daños. El enfoque de aprendizaje automático de IronQR gestiona estos escenarios de forma fiable.
Para el procesamiento por lotes de documentos, puede pasar varias imágenes al lector de forma secuencial y recopilar todos los resultados. La documentación sobre la lectura de códigos QR abarca la lectura de páginas PDF y flujos de cámara, además de archivos de imagen estáticos.
¿Cómo funciona el soporte multiplataforma?
A diferencia de las soluciones que dependen de System.Drawing.Common (obsoleto para el uso multiplataforma en .NET 6+), IronQR utiliza IronSoftware.Drawing para proyectos verdaderamente multiplataforma. Su código se ejecuta de forma coherente en Windows, macOS, Linux, iOS y Android. Para proyectos multiplataforma, las alternativas a SkiaSharp son innecesarias: IronQR gestiona la abstracción de plataformas internamente.
La documentación multiplataforma de .NET explica la compatibilidad general de la plataforma para .NET 10. IronQR se ajusta a estos principios al evitar por completo las API específicas de cada plataforma.
IronQR es compatible con los siguientes entornos de implementación:
- .NET 10, 9, 8, 7, 6: todas las versiones modernas de .NET
- .NET Core 3.x: para aplicaciones que aún no han migrado a .NET moderno
- Xamarin y MAUI: para el desarrollo de aplicaciones móviles
- Azure Functions y AWS Lambda: para cargas de trabajo sin servidor
Al ejecutarse en contenedores Docker, no se necesitan paquetes de sistema adicionales más allá de la imagen de tiempo de ejecución estándar de .NET Standard. Esto simplifica su Dockerfile en comparación con las bibliotecas que requieren dependencias GDI+ nativas. La guía de implementación de IronQR cubre la configuración para entornos en contenedores y en la nube.
¿En qué se diferencia IronQR de otras bibliotecas IronQR para .NET?
Existen varias bibliotecas de códigos QR para .NET, cada una con sus propias ventajas e inconvenientes. Comprender las diferencias te ayuda a elegir la herramienta adecuada para tu proyecto.
QRCoder es una biblioteca de código abierto con licencia MIT. Funciona bien para la generación sencilla de códigos QR, pero no incluye capacidades de lectura de códigos QR ni detección basada en aprendizaje automático. Sus opciones de salida son más limitadas en comparación con la compatibilidad con salidas con estilo de IronQR.
ZXing.NET es una adaptación a C# de la biblioteca Java ZXing. Admite tanto la lectura como la escritura, pero se basa en técnicas tradicionales de visión artificial que tienen dificultades con códigos dañados o girados. El manejo de imágenes multiplataforma requiere una configuración adicional.
IronQR ofrece funciones de generación y lectura en un único paquete, con licencias Enterprise que incluyen asistencia técnica dedicada. El lector ML, la salida estilizada y la integración IronSoftware.Drawing lo convierten en una solución más completa para aplicaciones de producción.
Para una comparación detallada de las características, consulte los artículos de comparación entre IronQR y QRCoder y entre IronQR y ZXing.
¿Cuales son tus próximos pasos?
IronQR ofrece una solución completa para la generación y lectura de códigos QR en .NET Core. Al gestionar automáticamente los generadores de cargas útiles complejas y el ensamblaje de módulos sin procesar y datos QrCodeData, simplifica el ciclo de desarrollo. Tanto si necesita una simple alternativa de biblioteca de código abierto como un sistema con funciones avanzadas opcionales, la arquitectura multiplataforma de IronQR garantiza un funcionamiento fiable.
Para seguir desarrollando con IronQR, explore estos recursos:
- Paquete NuGet de IronQR: instala la última versión estable
- Referencia de la API de IronQR: documentación completa de clases y métodos
- Ejemplos de códigos QR: código listo para copiar y pegar para situaciones habituales
- Tutoriales de IronQR: guías paso a paso para casos de uso específicos
- Opciones de licencia: elige el plan adecuado para tu proyecto
Comienza tu prueba gratuita para descubrir todo el potencial de IronQR sin ningún compromiso previo.
Preguntas Frecuentes
¿Cómo puedo generar códigos QR en .NET Core utilizando IronQR?
Puede generar códigos QR en .NET Core utilizando IronQR, que ofrece una biblioteca fácil de usar que permite la creación básica de códigos QR, así como funciones avanzadas de personalización.
¿Qué opciones de personalización están disponibles con IronQR para la generación de códigos QR?
IronQR ofrece varias opciones de personalización, incluida la configuración de los niveles de corrección de errores y la adición de logotipos a los códigos QR, lo que garantiza que cumplan sus requisitos específicos.
¿Puede IronQR gestionar la generación de códigos QR en aplicaciones web ASP.NET Core?
Sí, IronQR es totalmente compatible con las aplicaciones web ASP.NET Core , lo que permite a los desarrolladores integrar la generación de códigos QR en sus proyectos.
¿Es posible leer códigos QR con IronQR en .NET Core?
Por supuesto, IronQR está diseñado para leer códigos QR con gran precisión, aprovechando la tecnología de aprendizaje automático para garantizar una detección y extracción de datos precisas.
¿Qué hace que IronQR sea adecuado para los desarrolladores que buscan un generador de códigos QR?
IronQR ofrece un equilibrio entre facilidad de uso y funciones avanzadas, por lo que es una opción ideal para los desarrolladores que necesitan una biblioteca de códigos QR versátil y fiable.
¿Existen funciones avanzadas para el procesamiento de códigos QR en IronQR?
Sí, IronQR incluye funciones avanzadas como la configuración de la corrección de errores, la adición de elementos de marca y el manejo de varios formatos de códigos QR.
¿Cómo garantiza IronQR la precisión de la lectura de códigos QR?
IronQR utiliza algoritmos de aprendizaje automático para mejorar la precisión de la lectura de códigos QR, garantizando una captura de datos fiable incluso en condiciones difíciles.



