Cómo Generar Códigos QR y Barras en C#

Generar códigos QR en C#: tutorial completo para desarrolladores .NET

This article was translated from English: Does it need improvement?
Translated
View the article in English

¿Necesitas generar códigos QR en tu aplicación C#? Este tutorial te muestra exactamente cómo crear, personalizar y verificar códigos QR usando IronBarcode, desde implementaciones sencillas de una línea hasta funciones avanzadas como la inserción de logotipos y la codificación de datos binarios.

Ya sea que estés desarrollando sistemas de inventario, plataformas de venta de entradas para eventos o soluciones de pago sin contacto, aprenderás cómo implementar funcionalidad profesional de códigos QR en tus aplicaciones .NET.

Inicio rápido: Creación de códigos QR en una línea con IronBarcode

¿Listo para generar un código QR rápidamente? Aquí te mostramos cómo puedes usar la API QRCodeWriter de IronBarcode para producir un código QR en solo una línea de código: la personalización es opcional pero poderosa.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

  2. Copie y ejecute este fragmento de código.

    var qr = QRCodeWriter.CreateQrCode("https://ironsoftware.com/", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium); qr.SaveAsPng("MyQR.png");
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo instalo una biblioteca de códigos QR en C#?

Comience a usar IronBarcode en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Instala IronBarcode usando el Administrador de Paquetes NuGet con este sencillo comando:

Install-Package BarCode

Instalar vía NuGet

Alternativamente, descargue el DLL de IronBarcode directamente y agréguelo como una referencia a su proyecto.

Importar espacios de nombres requeridos

Agrega estos espacios de nombres para acceder a las funciones de generación de códigos QR de IronBarcode:

using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
Imports IronBarCode
Imports System
Imports System.Drawing
Imports System.Linq
$vbLabelText   $csharpLabel

¿Cómo puedo crear un código QR simple en C#?

Genera un código QR con solo una línea de código usando el método CreateQrCode de IronBarcode:

using IronBarCode;

// Generate a QR code with text content
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium);
qrCode.SaveAsPng("MyQR.png");
using IronBarCode;

// Generate a QR code with text content
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium);
qrCode.SaveAsPng("MyQR.png");
Imports IronBarCode

' Generate a QR code with text content
Private qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium)
qrCode.SaveAsPng("MyQR.png")
$vbLabelText   $csharpLabel

El método CreateQrCode acepta tres parámetros:

  • Contenido de texto: Los datos a codificar (admite URL, texto o cualquier dato de cadena)
  • Tamaño: Dimensiones en píxeles del código QR cuadrado (500x500 en este ejemplo)
  • Corrección de errores: Determina la legibilidad en condiciones subóptimas (Bajo, Medio, Cuartil o Alto)

Niveles más altos de corrección de errores permiten que los códigos QR sigan siendo legibles incluso cuando están parcialmente dañados o cubiertos, aunque resultan en patrones más densos con más módulos de datos.

Código QR estándar generado con IronBarcode en C# Un código QR básico que contiene texto "hello world", generado a 500x500 píxeles con corrección de errores media

¿Cómo agrego un logotipo a mi código QR?

Insertar logotipos en códigos QR mejora el reconocimiento de la marca mientras se mantiene la capacidad de escanear. IronBarcode automáticamente posiciona y dimensiona los logotipos para preservar la integridad del código QR:

using IronBarCode;
using IronSoftware.Drawing;

// Load logo image
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");

// Create QR code with embedded logo
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Customize appearance
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);

// Save the branded QR code
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png");
using IronBarCode;
using IronSoftware.Drawing;

// Load logo image
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");

// Create QR code with embedded logo
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Customize appearance
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);

// Save the branded QR code
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png");
Imports IronBarCode
Imports IronSoftware.Drawing

' Load logo image
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")

' Create QR code with embedded logo
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

' Customize appearance
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen)

' Save the branded QR code
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png")
$vbLabelText   $csharpLabel

El método CreateQrCodeWithLogo maneja inteligentemente la colocación de logotipos:

  • Dimensiona automáticamente el logo para mantener la legibilidad del código QR
  • Lo posiciona dentro de la zona de silencio para evitar la corrupción de datos
  • Preserva los colores originales del logo al cambiar los colores del código QR

Este enfoque asegura que sus códigos QR de marca permanezcan completamente funcionales en todos los dispositivos y aplicaciones de escaneo.

Código QR con el logo de Visual Studio incorporado Código QR que presenta el logo de Visual Studio, demostrando el dimensionamiento y posicionamiento automáticos de logotipos de IronBarcode

¿Cómo puedo exportar códigos QR a diferentes formatos?

IronBarcode admite múltiples formatos de exportación para diferentes casos de uso. Exporte sus códigos QR como imágenes, archivos PDF o archivos HTML:

using IronBarCode;
using System.Drawing;

// Create QR code with logo
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Apply custom styling
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen);

// Export to multiple formats
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");      // PDF document
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html"); // Standalone HTML
myQRCodeWithLogo.SaveAsPng("MyQRWithLogo.png");       // PNG image
myQRCodeWithLogo.SaveAsJpeg("MyQRWithLogo.jpg");      // JPEG image
using IronBarCode;
using System.Drawing;

// Create QR code with logo
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Apply custom styling
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen);

// Export to multiple formats
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");      // PDF document
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html"); // Standalone HTML
myQRCodeWithLogo.SaveAsPng("MyQRWithLogo.png");       // PNG image
myQRCodeWithLogo.SaveAsJpeg("MyQRWithLogo.jpg");      // JPEG image
Imports IronBarCode
Imports System.Drawing

' Create QR code with logo
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

' Apply custom styling
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen)

' Export to multiple formats
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf") ' PDF document
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html") ' Standalone HTML
myQRCodeWithLogo.SaveAsPng("MyQRWithLogo.png") ' PNG image
myQRCodeWithLogo.SaveAsJpeg("MyQRWithLogo.jpg") ' JPEG image
$vbLabelText   $csharpLabel

Cada formato sirve para propósitos específicos:

  • PDF: Ideal para documentos e informes imprimibles
  • HTML: Perfecto para la integración web sin dependencias externas
  • PNG/JPEG: Formatos de imagen estándar para uso versátil

¿Cómo verifico la legibilidad del código QR después de la personalización?

Modificaciones de color y logotipos afectan la escaneabilidad del código QR. Utiliza el método Verify() para asegurar que tus códigos QR personalizados sigan siendo legibles:

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;

// Generate QR code with logo
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Apply light color (may affect readability)
myVerifiedQR.ChangeBarCodeColor(Color.LightBlue);

// Verify the QR code can still be scanned
if (!myVerifiedQR.Verify())
{
    Console.WriteLine("LightBlue is not dark enough to be read accurately. Let's try DarkBlue");
    myVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}

// Save verified QR code
myVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");

// Open in default browser
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
    FileName = "MyVerifiedQR.html",
    UseShellExecute = true
});
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Drawing;

// Generate QR code with logo
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

// Apply light color (may affect readability)
myVerifiedQR.ChangeBarCodeColor(Color.LightBlue);

// Verify the QR code can still be scanned
if (!myVerifiedQR.Verify())
{
    Console.WriteLine("LightBlue is not dark enough to be read accurately. Let's try DarkBlue");
    myVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}

// Save verified QR code
myVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");

// Open in default browser
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
    FileName = "MyVerifiedQR.html",
    UseShellExecute = true
});
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Drawing

' Generate QR code with logo
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myVerifiedQR As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

' Apply light color (may affect readability)
myVerifiedQR.ChangeBarCodeColor(Color.LightBlue)

' Verify the QR code can still be scanned
If Not myVerifiedQR.Verify() Then
	Console.WriteLine("LightBlue is not dark enough to be read accurately. Let's try DarkBlue")
	myVerifiedQR.ChangeBarCodeColor(Color.DarkBlue)
End If

' Save verified QR code
myVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html")

' Open in default browser
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo With {
	.FileName = "MyVerifiedQR.html",
	.UseShellExecute = True
})
$vbLabelText   $csharpLabel

El método Verify() realiza una prueba de escaneo completa en su código QR. Esto garantiza compatibilidad en diferentes dispositivos de escaneo y condiciones de iluminación antes del despliegue.

Código QR verificado con color azul oscuro y logo de Visual Studio Un código QR verificado exitosamente en azul oscuro, demostrando el contraste adecuado para un escaneo confiable

¿Cómo puedo codificar datos binarios en códigos QR?

Los códigos QR sobresalen en almacenar datos binarios de manera eficiente. Esta capacidad permite aplicaciones avanzadas como transferencia de datos encriptados, intercambio de archivos y configuración de dispositivos IoT:

using IronBarCode;
using System;
using System.Linq;

// Convert string to binary data
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");

// Create QR code from binary content
QRCodeWriter.CreateQrCode(binaryData, 500).SaveAsPng("MyBinaryQR.png");

// Read and verify binary data integrity
var myReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();

// Confirm data matches original
if (binaryData.SequenceEqual(myReturnedData.BinaryValue))
{
    Console.WriteLine("Binary Data Read and Written Perfectly");
}
else
{
    throw new Exception("Data integrity check failed");
}
using IronBarCode;
using System;
using System.Linq;

// Convert string to binary data
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");

// Create QR code from binary content
QRCodeWriter.CreateQrCode(binaryData, 500).SaveAsPng("MyBinaryQR.png");

// Read and verify binary data integrity
var myReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();

// Confirm data matches original
if (binaryData.SequenceEqual(myReturnedData.BinaryValue))
{
    Console.WriteLine("Binary Data Read and Written Perfectly");
}
else
{
    throw new Exception("Data integrity check failed");
}
Imports IronBarCode
Imports System
Imports System.Linq

' Convert string to binary data
Private binaryData() As Byte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")

' Create QR code from binary content
QRCodeWriter.CreateQrCode(binaryData, 500).SaveAsPng("MyBinaryQR.png")

' Read and verify binary data integrity
Dim myReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()

' Confirm data matches original
If binaryData.SequenceEqual(myReturnedData.BinaryValue) Then
	Console.WriteLine("Binary Data Read and Written Perfectly")
Else
	Throw New Exception("Data integrity check failed")
End If
$vbLabelText   $csharpLabel

La codificación binaria en códigos QR ofrece varias ventajas:

  • Eficiencia: Almacena datos en formato binario compacto
  • Versatilidad: Maneja cualquier tipo de dato (archivos, contenido encriptado, objetos serializados)
  • Integridad: Preserva las secuencias de bytes exactas sin problemas de codificación

Esta característica distingue a IronBarcode de las bibliotecas básicas de códigos QR, permitiendo escenarios sofisticados de intercambio de datos en sus aplicaciones.

Código QR con datos codificados en binario Código QR que almacena datos binarios, demostrando las capacidades avanzadas de codificación de IronBarcode

¿Cómo leo códigos QR en C#?

IronBarcode proporciona capacidades flexibles de lectura de códigos QR. Aquí está el enfoque más simple:

using IronBarCode;
using System;
using System.Linq;

// Read QR code with optimized settings
BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { 
    ExpectBarcodeTypes = BarcodeEncoding.QRCode 
});

// Extract and display the decoded value
if (result != null && result.Any())
{
    Console.WriteLine(result.First().Value);
}
else
{
    Console.WriteLine("No QR codes found in the image.");
}
using IronBarCode;
using System;
using System.Linq;

// Read QR code with optimized settings
BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { 
    ExpectBarcodeTypes = BarcodeEncoding.QRCode 
});

// Extract and display the decoded value
if (result != null && result.Any())
{
    Console.WriteLine(result.First().Value);
}
else
{
    Console.WriteLine("No QR codes found in the image.");
}
Imports IronBarCode
Imports System
Imports System.Linq

' Read QR code with optimized settings
Private result As BarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})

' Extract and display the decoded value
If result IsNot Nothing AndAlso result.Any() Then
	Console.WriteLine(result.First().Value)
Else
	Console.WriteLine("No QR codes found in the image.")
End If
$vbLabelText   $csharpLabel

Para escenarios más complejos que requieren un control fino:

using IronBarCode;
using System;
using System.Linq;

// Configure advanced reading options
BarcodeReaderOptions options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,           // Optimize for speed
    ExpectMultipleBarcodes = false,        // Single QR code expected
    ExpectBarcodeTypes = BarcodeEncoding.QRCode, // QR codes only
    Multithreaded = true,                  // Enable parallel processing
    MaxParallelThreads = 4,                // Utilize multiple CPU cores
    RemoveFalsePositive = true,            // Filter out false detections
    ImageFilters = new ImageFilterCollection() // Apply preprocessing
    {
        new AdaptiveThresholdFilter(),    // Handle varying lighting
        new ContrastFilter(),              // Enhance contrast
        new SharpenFilter()                // Improve edge definition
    }
};

// Read with advanced configuration
BarcodeResults result = BarcodeReader.Read("QR.png", options);
using IronBarCode;
using System;
using System.Linq;

// Configure advanced reading options
BarcodeReaderOptions options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,           // Optimize for speed
    ExpectMultipleBarcodes = false,        // Single QR code expected
    ExpectBarcodeTypes = BarcodeEncoding.QRCode, // QR codes only
    Multithreaded = true,                  // Enable parallel processing
    MaxParallelThreads = 4,                // Utilize multiple CPU cores
    RemoveFalsePositive = true,            // Filter out false detections
    ImageFilters = new ImageFilterCollection() // Apply preprocessing
    {
        new AdaptiveThresholdFilter(),    // Handle varying lighting
        new ContrastFilter(),              // Enhance contrast
        new SharpenFilter()                // Improve edge definition
    }
};

// Read with advanced configuration
BarcodeResults result = BarcodeReader.Read("QR.png", options);
Imports IronBarCode
Imports System
Imports System.Linq

' Configure advanced reading options
Private options As New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Faster,
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode,
	.Multithreaded = True,
	.MaxParallelThreads = 4,
	.RemoveFalsePositive = True,
	.ImageFilters = New ImageFilterCollection() From {
		New AdaptiveThresholdFilter(),
		New ContrastFilter(),
		New SharpenFilter()
	}
}

' Read with advanced configuration
Private result As BarcodeResults = BarcodeReader.Read("QR.png", options)
$vbLabelText   $csharpLabel

Estas opciones de lectura avanzadas permiten una detección confiable de códigos QR en condiciones difíciles como mala iluminación, distorsión de imagen o impresiones de baja calidad.

¿Qué sigue para el desarrollo del código QR?

Ahora que has dominado la generación de códigos QR con IronBarcode, explora estos temas avanzados:

Descargar recursos

Acceda al código fuente completo y ejemplos:

Documentación de la API

Explora el conjunto completo de características en la referencia de la API:

Alternativa: IronQR para aplicaciones QR avanzadas

Para proyectos que requieren capacidades avanzadas de códigos QR, considera IronQR, la biblioteca especializada de códigos QR de Iron Software con lectura potenciada por aprendizaje automático y opciones avanzadas de generación.

¿Listo para implementar códigos QR en tu aplicación .NET? Comienza tu prueba gratuita o descarga IronBarcode hoy.

Preguntas Frecuentes

¿Cómo genero un código QR en C#?

Puede generar un código QR en C# usando el método IronBarcode's QRCodeWriter.CreateQrCode(). Este método le permite pasar su contenido, tamaño y nivel de corrección de errores para crear un código QR de manera eficiente.

¿A qué formatos de imagen se pueden exportar los códigos QR?

Con IronBarcode, puede exportar códigos QR a varios formatos, incluidos PNG, JPEG, PDF y HTML. Métodos como SaveAsPng(), SaveAsJpeg(), SaveAsPdf() y SaveAsHtmlFile() están disponibles para este propósito.

¿Cómo puedo agregar un logotipo de empresa a un código QR?

IronBarcode proporciona el método CreateQrCodeWithLogo(), donde puede pasar un objeto QRCodeLogo que contenga la imagen de su logotipo. La biblioteca asegura que el logotipo esté correctamente dimensionado y posicionado para mantener la legibilidad del código QR.

¿Qué es la corrección de errores de códigos QR y qué nivel debo elegir?

La corrección de errores en códigos QR les permite seguir siendo escaneables incluso si están parcialmente dañados. IronBarcode ofrece cuatro niveles: Bajo (7%), Medio (15%), Cuartil (25%) y Alto (30%). El Medio es adecuado para la mayoría de los propósitos, mientras que el Alto es ideal para entornos desafiantes.

¿Cómo verifico la legibilidad de un código QR personalizado?

Puede utilizar el método Verify() en un objeto GeneratedBarcode para asegurarse de que su código QR personalizado siga siendo escaneable después de modificaciones como cambios de color o adiciones de logotipos.

¿Se pueden codificar datos binarios en códigos QR?

Sí, el método CreateQrCode() de IronBarcode admite la codificación de matrices de bytes, lo que le permite almacenar datos binarios como archivos o contenido cifrado dentro de códigos QR.

¿Cómo leo códigos QR de imágenes en C#?

Para leer códigos QR de imágenes en C#, utilice el método BarcodeReader.Read() de IronBarcode. Para un rendimiento óptimo, especifique BarcodeEncoding.QRCode en BarcodeReaderOptions.

¿Cuál es la capacidad máxima de datos de un código QR?

Los códigos QR generados por IronBarcode pueden contener hasta 2,953 bytes, 4,296 caracteres alfanuméricos o 7,089 dígitos numéricos, dependiendo del nivel de corrección de errores seleccionado.

¿Cómo puedo cambiar el color de un código QR mientras aseguro que siga siendo escaneable?

El método ChangeBarCodeColor() en IronBarcode le permite alterar el color de un código QR. Siempre utilice el método Verify() después para confirmar que la legibilidad del código QR no se vea afectada por el cambio de color.

¿Qué características ofrece una biblioteca especializada en códigos QR?

IronQR, una biblioteca especializada de Iron Software, incluye características avanzadas como lectura de códigos QR mediante aprendizaje automático con una precisión del 99.99% y capacidades de generación robustas adaptadas para aplicaciones complejas.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más
¿Listo para empezar?
Nuget Descargas 1,979,979 | Version: 2025.11 recién lanzado