Saltar al pie de página
USANDO IRONQR

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 for .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.

Empiece con IronQR ahora.
green arrow pointer

¿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 al principio de su archivo. IronQR se integra con IronSoftware.Drawing para el manejo de imágenes multiplataforma, eliminando la necesidad de dependencias específicas de cada plataforma, como System.Drawing.Common, que quedó obsoleta para el uso multiplataforma en .NET 6 y versiones posteriores.

Puede verificar que la instalación se ha realizado correctamente comprobando las referencias de 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")
$vbLabelText   $csharpLabel

Resultado

Generador de códigos QR .NET Core: Crear y leer códigos QR en C#: Imagen 1 - Código QR creado a partir de la URL

El método QrWriter.Write() procesa los datos en QrCodeData, que contiene los módulos sin procesar (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 múltiples plataformas, por lo que el mismo código funciona en Windows, macOS y Linux sin necesidad de 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.

Niveles de corrección de errores de los códigos QR y sus casos de uso
Nivel Recuperación de datos Mejor para
L (Bajo) ~7 % Pantallas digitales nítidas
M (Medio) ~15 % Uso general
Q (Quartile) ~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(QrErrorCorrectionLevel.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(QrErrorCorrectionLevel.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(QrErrorCorrectionLevel.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")
$vbLabelText   $csharpLabel

Resultado QR

Generador de códigos QR .NET Core: Crear y leer códigos QR en C#: Imagen 2 - Código QR generado con corrección de errores

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")
$vbLabelText   $csharpLabel

Código QR estilizado

Generador de códigos QR .NET Core: Crear y leer códigos de respuesta rápida en C#: Imagen 3 - Salida de código QR con estilo

La propiedad Dimensions establece el tamaño de la imagen de salida en píxeles. La propiedad Margins controla la zona de silencio, es decir, el borde en blanco alrededor del código QR que los escáneres necesitan para identificar correctamente los límites 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. Aquí hay una implementación de la 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
$vbLabelText   $csharpLabel

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 aplicaciones ASP.NET Core en producción, considere el almacenamiento en caché de códigos QR generados con frecuencia utilizando IMemoryCache o IDistributedCache para reducir la carga 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.

Registrar la clave de licencia de IronQR en Program.cs utilizando el patrón de instrucció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"
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

Resultado

Generador de códigos QR .NET Core: Crear y leer códigos de respuesta rápida en C#: Imagen 4 - Código QR codificado con texto Unicode en japonés

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
$vbLabelText   $csharpLabel

Salida de lectura de código QR

Generador de códigos QR .NET Core: Crear y leer códigos de respuesta rápida en C#: Imagen 5 - Datos leídos del código QR

El objeto QrResult contiene el valor decodificado junto con metadatos de posición, que puede utilizar para resaltar la región del código QR detectada en superposiciones de la interfaz de usuario o en flujos 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 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 for .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 nativas de GDI+. La guía de implementación de IronQR abarca la configuración para entornos en contenedores y en la nube.

¿En qué se diferencia IronQR de otras bibliotecas IronQR for .NET?

Existen varias bibliotecas de códigos QR for .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 basado en ML, la salida con estilo y la integración de 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 generadores de carga útil complejos y el ensamblaje de módulos sin procesar y datos QrCodeData de forma automática, 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:

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.

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