# Generate QR Codes in C# - Complete Tutorial for .NET Developers
<div class="alert alert-info iron-variant-1" role="alert">
<a href="/csharp/qr/">IronQR</a> es la nueva biblioteca de códigos QR .NET de Iron Software. Aprovecha las técnicas de aprendizaje automático de vanguardia para leer códigos QR desde cualquier ángulo con una precisión del 99,99 %. ¡Genera y personaliza nuevos códigos QR fácilmente! <a href="/csharp/qr/tutorials/csharp-qr-code-generator/">¡Empieza a usar IronQR</a> ahora!
</div>
¿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 simples de una línea hasta funciones avanzadas como la incrustació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.
*as-heading:2(Inicio rápido: Creación de códigos QR de una línea con IronBarcode)*
¿Listo para generar un código QR rápido? Aquí te mostramos cómo puedes usar la API de `QRCodeWriter` de IronBarcode para producir un código QR en solo una línea de código: la personalización es opcional pero poderosa.
```cs
:title=Generate QR in One Line—Try It Now
var qr = QRCodeWriter.CreateQrCode("https://ironsoftware.com/", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium); qr.SaveAsPng("MyQR.png");
```
<div class="hsg-featured-snippet">
<h3>Flujo de trabajo mínimo (5 pasos)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://www.nuget.org/packages/BarCode/">Instalar IronBarcode mediante NuGet</a></li>
<li>Crea un código QR con una línea: <code>QRCodeWriter.CreateQrCode()</code></li>
<li>Incrustar logotipos usando <code>CreateQrCodeWithLogo()</code></li>
<li>Verifique la legibilidad con <code>GeneratedBarcode.Verify()</code></li>
<li>Codificar datos binarios para aplicaciones avanzadas</li>
</ol>
</div>
## How Do I Install a QR Code Library in C#?
Instala `IronBarcode` usando el Administrador de paquetes NuGet con este sencillo comando:
```shell
:ProductInstall
```
[Instalar vía NuGet](https://www.nuget.org/packages/BarCode/)
Alternativamente, [descargue el DLL de IronBarcode directamente](/csharp/barcode/packages/IronBarCode.zip) 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:
```csharp
using IronBarCode;
// You may add styling with color, logo images or branding:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
// Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");
// Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
```
## How Can I Create a Simple QR Code in C#?
Genera un código QR con solo una línea de código usando el método `CreateQrCode` de `IronBarcode`:
```csharp
using IronBarCode;
using IronSoftware.Drawing;
using System;
// Verifying QR Codes
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode MyVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue);
if (!MyVerifiedQR.Verify())
{
Console.WriteLine("\t LightBlue is not dark enough to be read accurately. Lets try DarkBlue");
MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");
// open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html");
```
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.

*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` posiciona y dimensiona automáticamente los logotipos para preservar la integridad del código QR:
```csharp
using IronBarCode;
using System;
using System.Linq;
// Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");
// WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");
// READ QR with Binary Content
var MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();
if (BinaryData.SequenceEqual(MyReturnedData.BinaryValue))
{
Console.WriteLine("\t Binary Data Read and Written Perfectly");
}
else
{
throw new Exception("Corrupted Data");
}
```
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 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:
```csharp
using IronBarCode;
using System;
using System.Linq;
BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode });
if (result != null)
{
Console.WriteLine(result.First().Value);
}
```
Cada formato sirve para propósitos específicos:
- **PDF**: Ideal para [documentos e informes imprimibles](/csharp/barcode/how-to/create-barcode-images/)
- **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 sean legibles:
```csharp
using IronBarCode;
using System;
using System.Linq;
BarcodeReaderOptions options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Faster,
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.All,
Multithreaded = false,
MaxParallelThreads = 0,
CropArea = null,
UseCode39ExtendedMode = false,
RemoveFalsePositive = false,
ImageFilters = null
};
BarcodeResults result = BarcodeReader.Read("QR.png", options);
if (result != null)
{
Console.WriteLine(result.First().Value);
}
```
El método `Verify()` realiza una prueba de escaneo exhaustiva en tu código QR. Esto garantiza compatibilidad en diferentes dispositivos de escaneo y condiciones de iluminación antes del despliegue.

*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:
```csharp
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");
}
```
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 de códigos QR básicas, permitiendo escenarios sofisticados de intercambio de datos en tus aplicaciones.

*Código QR que almacena datos binarios, demostrando las capacidades avanzadas de codificación de IronBarcode*
## How Do I Read QR Codes in C#?
`IronBarcode` proporciona capacidades flexibles de lectura de códigos QR. Este es el enfoque más sencillo:
```csharp
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.");
}
```
Para escenarios más complejos que requieren un control fino:
```csharp
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);
```
Estas [opciones de lectura avanzadas](/csharp/barcode/object-reference/api/IronBarCode.BarcodeReaderOptions.html) 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é viene ahora para el desarrollo de códigos QR?
Ahora que has dominado la generación de códigos QR con `IronBarcode`, explora estos temas avanzados:
- [Extraer códigos QR de documentos PDF](/csharp/barcode/how-to/read-barcodes-from-pdf/)
- [Implementar procesamiento por lotes de códigos QR](/csharp/barcode/tutorials/reading-barcodes/)
- [Aplicar correcciones de imagen para escaneos difíciles](/csharp/barcode/how-to/image-correction/)
### Descargar recursos
Acceda al código fuente completo y ejemplos:
- [Repositorio GitHub](https://github.com/iron-software/Iron-Barcode-Generating-QR-Codes-In-CSharp-Tutorial)
- [Descargar Código Fuente](/downloads/assets/tutorials/creating-qr-barcodes-in-dot-net/Generating-QR-Codes-In-CSharp.zip)
### Documentación de la API
Explora el conjunto completo de características en la referencia de la API:
- [Referencia de clase QRCodeWriter](/csharp/barcode/object-reference/api/IronBarCode.QRCodeWriter.html)
- [Referencia de clase BarcodeReader](/csharp/barcode/object-reference/api/IronBarCode.BarcodeReader.html)
- [Referencia de clase GeneratedBarcode](/csharp/barcode/object-reference/api/IronBarCode.GeneratedBarcode.html)
### Alternativa: IronQR para aplicaciones QR avanzadas
Para proyectos que requieran capacidades de código QR de vanguardia, considere [IronQR](/csharp/qr/), la biblioteca de códigos QR especializada de Iron Software que ofrece lectura impulsada por aprendizaje automático con una precisión del 99,99% y opciones de generación avanzadas.
¿Listo para implementar códigos QR en tu aplicación .NET? [Comienza tu prueba gratuita](trial-license) o [descarga IronBarcode](download-modal) hoy.
IronQR es la nueva biblioteca de códigos QR .NET de Iron Software. Aprovecha las técnicas de aprendizaje automático de vanguardia para leer códigos QR desde cualquier ángulo con una precisión del 99,99 %. ¡Genera y personaliza nuevos códigos QR fácilmente! ¡Empieza a usar IronQR ahora!
¿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 simples de una línea hasta funciones avanzadas como la incrustació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 de una línea con IronBarcode
¿Listo para generar un código QR rápido? Aquí te mostramos cómo puedes usar la API de QRCodeWriter de IronBarcode para producir un código QR en solo una línea de código: la personalización es opcional pero poderosa.
1Install IronBarcode with NuGet Package Manager
PM > Install-Package BarCode
Install-Package BarCode
2Copie y ejecute este fragmento de código.
var qr = QRCodeWriter.CreateQrCode("https://ironsoftware.com/", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium); qr.SaveAsPng("MyQR.png");
var qr = QRCodeWriter.CreateQrCode("https://ironsoftware.com/", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium); qr.SaveAsPng("MyQR.png");
C#
3Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Agrega estos espacios de nombres para acceder a las funciones de generación de códigos QR de IronBarcode:
using IronBarCode;// You may add styling with color, logo images or branding:QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);// Save as PDFmyQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");// Also Save as HTMLmyQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
using IronBarCode;
// You may add styling with color, logo images or branding:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
// Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");
// Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
ImportsIronBarCode' You may add styling with color, logo images or branding:Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")Private myQRCodeWithLogo AsGeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)' Save as PDFmyQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf")' Also Save as HTMLmyQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
Imports IronBarCode
' You may add styling with color, logo images or branding:
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)
' Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf")
' Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
How Can I Create a Simple QR Code in C#?
Genera un código QR con solo una línea de código usando el método CreateQrCode de IronBarcode:
using IronBarCode;using IronSoftware.Drawing;using System;// Verifying QR CodesQRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");GeneratedBarcodeMyVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue);if (!MyVerifiedQR.Verify()){Console.WriteLine("\t LightBlue is not dark enough to be read accurately. Lets try DarkBlue");MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);}MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");// open the barcode html file in your default web browserSystem.Diagnostics.Process.Start("MyVerifiedQR.html");
using IronBarCode;
using IronSoftware.Drawing;
using System;
// Verifying QR Codes
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode MyVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue);
if (!MyVerifiedQR.Verify())
{
Console.WriteLine("\t LightBlue is not dark enough to be read accurately. Lets try DarkBlue");
MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");
// open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html");
ImportsMicrosoft.VisualBasicImportsIronBarCodeImportsIronSoftware.DrawingImportsSystem' Verifying QR CodesPrivate qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")PrivateMyVerifiedQRAsGeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue)IfNotMyVerifiedQR.Verify() ThenConsole.WriteLine(vbTab & " LightBlue is not dark enough to be read accurately. Lets try DarkBlue")MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue)End IfMyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html")' open the barcode html file in your default web browserSystem.Diagnostics.Process.Start("MyVerifiedQR.html")
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
' Verifying QR Codes
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private MyVerifiedQR As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)
MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue)
If Not MyVerifiedQR.Verify() Then
Console.WriteLine(vbTab & " LightBlue is not dark enough to be read accurately. Lets try DarkBlue")
MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue)
End If
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html")
' open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html")
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.
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 posiciona y dimensiona automáticamente los logotipos para preservar la integridad del código QR:
using IronBarCode;using System;using System.Linq;// Create Some Binary Data - This example equally well for Byte[] and System.IO.Streambyte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");// WRITE QR with Binary ContentQRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");// READ QR with Binary ContentvarMyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();if (BinaryData.SequenceEqual(MyReturnedData.BinaryValue)){Console.WriteLine("\t Binary Data Read and Written Perfectly");}else{ throw new Exception("Corrupted Data");}
using IronBarCode;
using System;
using System.Linq;
// Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");
// WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");
// READ QR with Binary Content
var MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();
if (BinaryData.SequenceEqual(MyReturnedData.BinaryValue))
{
Console.WriteLine("\t Binary Data Read and Written Perfectly");
}
else
{
throw new Exception("Corrupted Data");
}
ImportsMicrosoft.VisualBasicImportsIronBarCodeImportsSystemImportsSystem.Linq' Create Some Binary Data - This example equally well for Byte[] and System.IO.StreamPrivateBinaryData() AsByte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")' WRITE QR with Binary ContentQRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png")' READ QR with Binary ContentDimMyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()IfBinaryData.SequenceEqual(MyReturnedData.BinaryValue) ThenConsole.WriteLine(vbTab & " Binary Data Read and Written Perfectly")ElseThrow New Exception("Corrupted Data")End If
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports System
Imports System.Linq
' Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
Private BinaryData() As Byte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")
' WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png")
' READ QR with Binary Content
Dim MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()
If BinaryData.SequenceEqual(MyReturnedData.BinaryValue) Then
Console.WriteLine(vbTab & " Binary Data Read and Written Perfectly")
Else
Throw New Exception("Corrupted Data")
End If
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 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;using System.Linq;BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode });if (result != null){Console.WriteLine(result.First().Value);}
using IronBarCode;
using System;
using System.Linq;
BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode });
if (result != null)
{
Console.WriteLine(result.First().Value);
}
ImportsIronBarCodeImportsSystemImportsSystem.LinqPrivate result AsBarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})If result IsNot Nothing ThenConsole.WriteLine(result.First().Value)End If
Imports IronBarCode
Imports System
Imports System.Linq
Private result As BarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})
If result IsNot Nothing Then
Console.WriteLine(result.First().Value)
End If
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 sean legibles:
using IronBarCode;
using System;
using System.Linq;
BarcodeReaderOptions options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Faster,
ExpectMultipleBarcodes = false,
ExpectBarcodeTypes = BarcodeEncoding.All,
Multithreaded = false,
MaxParallelThreads = 0,
CropArea = null,
UseCode39ExtendedMode = false,
RemoveFalsePositive = false,
ImageFilters = null
};
BarcodeResults result = BarcodeReader.Read("QR.png", options);
if (result != null)
{
Console.WriteLine(result.First().Value);
}
ImportsIronBarCodeImportsSystemImportsSystem.LinqPrivate options As New BarcodeReaderOptionsWith { .Speed = ReadingSpeed.Faster, .ExpectMultipleBarcodes = False, .ExpectBarcodeTypes = BarcodeEncoding.All, .Multithreaded = False, .MaxParallelThreads = 0, .CropArea = Nothing, .UseCode39ExtendedMode = False, .RemoveFalsePositive = False, .ImageFilters = Nothing}Private result AsBarcodeResults = BarcodeReader.Read("QR.png", options)If result IsNot Nothing ThenConsole.WriteLine(result.First().Value)End If
Imports IronBarCode
Imports System
Imports System.Linq
Private options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Faster,
.ExpectMultipleBarcodes = False,
.ExpectBarcodeTypes = BarcodeEncoding.All,
.Multithreaded = False,
.MaxParallelThreads = 0,
.CropArea = Nothing,
.UseCode39ExtendedMode = False,
.RemoveFalsePositive = False,
.ImageFilters = Nothing
}
Private result As BarcodeResults = BarcodeReader.Read("QR.png", options)
If result IsNot Nothing Then
Console.WriteLine(result.First().Value)
End If
El método Verify() realiza una prueba de escaneo exhaustiva en tu código QR. Esto garantiza compatibilidad en diferentes dispositivos de escaneo y condiciones de iluminación antes del despliegue.
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 databyte[] binaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");// Create QR code from binary contentQRCodeWriter.CreateQrCode(binaryData, 500).SaveAsPng("MyBinaryQR.png");// Read and verify binary data integrityvar myReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();// Confirm data matches originalif (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");
}
ImportsIronBarCodeImportsSystemImportsSystem.Linq' Convert string to binary dataDim binaryData AsByte() = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")' Create QR code from binary contentQRCodeWriter.CreateQrCode(binaryData, 500).SaveAsPng("MyBinaryQR.png")' Read and verify binary data integrityDim myReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()' Confirm data matches originalIf binaryData.SequenceEqual(myReturnedData.BinaryValue) ThenConsole.WriteLine("Binary Data Read and Written Perfectly")ElseThrow New Exception("Data integrity check failed")End If
Imports IronBarCode
Imports System
Imports System.Linq
' Convert string to binary data
Dim 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
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 de códigos QR básicas, permitiendo escenarios sofisticados de intercambio de datos en tus aplicaciones.
Código QR que almacena datos binarios, demostrando las capacidades avanzadas de codificación de IronBarcode
How Do I Read QR Codes in C#?
IronBarcode proporciona capacidades flexibles de lectura de códigos QR. Este es el enfoque más sencillo:
using IronBarCode;using System;using System.Linq;// Read QR code with optimized settingsBarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode});// Extract and display the decoded valueif (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.");
}
ImportsIronBarCodeImportsSystemImportsSystem.Linq' Read QR code with optimized settingsPrivate result AsBarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})' Extract and display the decoded valueIf result IsNot NothingAndAlso result.Any() ThenConsole.WriteLine(result.First().Value)ElseConsole.WriteLine("No QR codes found in the image.")End If
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
Para escenarios más complejos que requieren un control fino:
using IronBarCode;using System;using System.Linq;// Configure advanced reading optionsBarcodeReaderOptions options = new BarcodeReaderOptions{Speed = ReadingSpeed.Faster, // Optimize for speedExpectMultipleBarcodes = false, // Single QR code expectedExpectBarcodeTypes = BarcodeEncoding.QRCode, // QR codes onlyMultithreaded = true, // Enable parallel processingMaxParallelThreads = 4, // Utilize multiple CPU coresRemoveFalsePositive = true, // Filter out false detectionsImageFilters = new ImageFilterCollection() // Apply preprocessing { new AdaptiveThresholdFilter(), // Handle varying lighting new ContrastFilter(), // Enhance contrast new SharpenFilter() // Improve edge definition }};// Read with advanced configurationBarcodeResults 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);
ImportsIronBarCodeImportsSystemImportsSystem.Linq' Configure advanced reading optionsDim options As New BarcodeReaderOptionsWith { .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() From { ' Apply preprocessing New AdaptiveThresholdFilter(), ' Handle varying lighting New ContrastFilter(), ' Enhance contrast New SharpenFilter() ' Improve edge definition }}' Read with advanced configurationDim result AsBarcodeResults = BarcodeReader.Read("QR.png", options)
Imports IronBarCode
Imports System
Imports System.Linq
' Configure advanced reading options
Dim options As New BarcodeReaderOptions With {
.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() From { ' Apply preprocessing
New AdaptiveThresholdFilter(), ' Handle varying lighting
New ContrastFilter(), ' Enhance contrast
New SharpenFilter() ' Improve edge definition
}
}
' Read with advanced configuration
Dim result As BarcodeResults = BarcodeReader.Read("QR.png", options)
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é viene ahora para el desarrollo de códigos QR?
Ahora que has dominado la generación de códigos QR con IronBarcode, explora estos temas avanzados:
Alternativa: IronQR para aplicaciones QR avanzadas
Para proyectos que requieran capacidades de código QR de vanguardia, considere IronQR, la biblioteca de códigos QR especializada de Iron Software que ofrece lectura impulsada por aprendizaje automático con una precisión del 99,99% y opciones de generación avanzadas.
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 es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.