USO DE IRONQR

Cómo generar códigos QR en ASP .NET Core

Publicado en 6 de junio, 2024
Compartir:

Introducción

Los códigos QR se han convertido en parte integrante de la tecnología moderna y ofrecen una forma cómoda de almacenar y transmitir información. En el desarrollo web, los generadores de códigos QR como el que implementaremos usando IronQR en ASP.NET Core, proporcionan capacidades robustas para la creación dinámica de códigos QR. Los generadores de códigos QR tienen un valor incalculable para diversas aplicaciones, como sistemas de venta de entradas, autenticación, gestión de inventarios, etc. Este artículo profundiza en el proceso de creación de códigos QR en ASP.NET Core utilizando IronQR, una potente librería diseñada para este fin. ASP.NET Core, al ser un marco versátil para crear aplicaciones web, ofrece sólidas capacidades para generar códigos QR. En este artículo, profundizaremos en el proceso de creación de códigos QR en ASP.NET Core utilizando IronQRuna potente biblioteca para la generación de códigos QR a partir de Iron Software.

Cómo generar códigos QR en ASP.NET Core

  1. Crear un proyecto ASP.Net con Visual Studio

  2. Instale IronQR biblioteca del Gestor de paquetes

  3. Generar código QR

  4. Generar código QR con formato

Entender IronQR

IronQR es una biblioteca de generación de códigos QR de alto rendimiento para aplicaciones .NET. Proporciona una API sencilla e intuitiva para generar códigos QR con varias opciones de personalización. IronQR admite .NET Standard, por lo que es compatible con una amplia gama de plataformas, incluida ASP.NET Core. Con IronQR, los desarrolladores pueden generar sin esfuerzo códigos QR con diferentes tipos de datos, niveles de corrección de errores, tamaños y formatos.

Características principales

1. Lectura y creación de códigos QR

IronQR le permite generar y leer códigos QR con facilidad. Tanto si necesita crear códigos QR dinámicamente como extraer información de los ya existentes, esta biblioteca le cubre todas sus necesidades.

2. API fácil de usar

La biblioteca proporciona una API fácil de usar que permite a los desarrolladores integrar rápidamente la funcionalidad de los códigos de barras en sus proyectos .NET. Puede empezar a trabajar con códigos QR en sólo unos minutos.

3. Compatibilidad

IronQR es compatible con varias versiones de .NET, entre ellas

  1. C#, VB.NET, F#

  2. .NET Core (8, 7, 6, 5 y 3.1+.)

  3. .NET Standard (2.0+)

  4. .NET Framework (4.6.2+)

    Abarca una amplia gama de tipos de proyectos, incluida la web (Blazor y WebForms), móvil (Xamarin y MAUI), escritorio (WPF Y MAUI)y aplicaciones de consola.

4. Modelo de aprendizaje automático para la detección de QR

IronQR utiliza un avanzado modelo de aprendizaje automático personalizado para detectar códigos QR. Esto garantiza un reconocimiento preciso y fiable de los códigos. Además, hay una opción de Modo Delgado (no ML) disponible para quienes prefieran un enfoque ligero.

5. Lectura de códigos QR

Puede leer códigos QR de varios formatos de imagen, incluidos:

  1. Imágenes (jpg, png, svg, bmp)

  2. Imágenes multipágina (gif, tif, tiff)

  3. Mapas de bits `System.Drawing

  4. IronDrawing Imágenes (Cualquier mapa de bits)

6. Escribir códigos QR

IronQR le permite escribir códigos QR para diferentes tipos de documentos, tales como:

  1. Imágenes (jpg, png, gif, tiff, bmp)

  2. Imágenes `System.Drawing

  3. Corrientes (MemoryStream, byte[])

  4. PDF (Sello en PDF existente)

7. Estilización de códigos QR

Personaliza los códigos QR cambiando el tamaño, ajustando márgenes y bordes, cambiando el color y añadiendo logotipos.

8. Tratamiento y corrección de errores

IronQR proporciona mensajes de error detallados y admite niveles de corrección de errores QR personalizados.

Con estos conocimientos, vamos a empezar con la aplicación para generar código QR en ASP.NET Core.

Paso 1: Crear un nuevo proyecto ASP.NET con Visual Studio

Antes de sumergirnos en la generación de códigos QR, vamos a configurar un nuevo proyecto ASP.NET Core. Estos son los pasos para iniciar un nuevo proyecto:

Empiece creando un nuevo proyecto en Visual Studio y seleccionando la plantilla de aplicación ASP.Net Core Web App

Cómo generar códigos QR en ASP .NET Core: Figura 1 - Seleccione la plantilla de aplicación web ASP.NET CORE

Nombre y ubicación del proyecto

Cómo generar códigos QR en ASP .NET Core: Figura 2 - Nombre del proyecto y la ubicación en la que desea guardar

Seleccione la versión .NET necesaria.

Cómo generar códigos QR en ASP .NET Core: Figura 3 - Seleccione la versión correcta de .NET.

Haga clic en el botón "crear" para generar el código de la aplicación a partir de la plantilla

Cómo generar códigos QR en ASP .NET Core: Figura 4 - Haga clic en el botón "crear" para generar el código de plantilla

Paso 2: Instalar la librería IronQR desde el Gestor de Paquetes

Instale IronQR de Visual Studio Package Manager como se muestra a continuación.

Cómo generar códigos QR en ASP .NET Core: Figura 5 - Buscar IronOCR usando Visual Studio Package Manager e instalarlo

IronQR también puede instalarse mediante NuGet Package Manager.

Cómo generar códigos QR en ASP .NET Core: Figura 6 - Búsqueda de IronOCR con el gestor de paquetes NuGet

Paso 3: Generar un código QR

Ahora, vamos a crear una aplicación de código QR.

Crear modelo `QRCode

using System.ComponentModel.DataAnnotations;
namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText
        {
            get;
            set;
        }
    }
}
using System.ComponentModel.DataAnnotations;
namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText
        {
            get;
            set;
        }
    }
}
Imports System.ComponentModel.DataAnnotations
Namespace GenerateQRCode.Models
	Public Class QRCodeModel
		<Display(Name := "Enter QR Code Text")>
		Public Property QRCodeText() As String
	End Class
End Namespace
VB   C#

Crear un controlador de código QR

Para añadir un nuevo controlador, haga clic con el botón derecho del ratón en la carpeta del controlador e introduzca un nombre como se muestra a continuación.

Cómo generar códigos QR en ASP .NET Core: Figura 7 - Añade un nuevo controlador haciendo clic en la carpeta y dale un nombre

Seleccione el controlador vacío.

Cómo generar códigos QR en ASP .NET Core: Figura 8 - Haga clic en Empty Controller en el prompt

Proporcione un nombre.

Cómo generar códigos QR en ASP .NET Core: Figura 9 - Nombre del controlador

A continuación, integra el siguiente código en el controlador.

using GenerateQRCode.Models;
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
using GenerateQRCode.Models;
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
Imports GenerateQRCode.Models
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace GenerateQRCode.Controllers
	Public Class QrCodeController
		Inherits Controller

		Private ReadOnly _environment As IWebHostEnvironment
		Public Sub New(ByVal environment As IWebHostEnvironment)
			_environment = environment
		End Sub
		Public Function Index() As IActionResult
			Return View()
		End Function
		<HttpPost>
		Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult
			Try
				Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode")
				If Not Directory.Exists(path) Then
					Directory.CreateDirectory(path)
				End If
				Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png")
				' Create a QR Code object
				Dim myQr As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
				' Save QR Code as a Bitmap
				Dim qrImage As AnyBitmap = myQr.Save()
				' Save QR Code Bitmap as File
				qrImage.SaveAs(filePath)
				Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file
				Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName
				ViewBag.QrCodeUri = imageUrl
			Catch e1 As Exception
				Throw
			End Try
			Return View()
		End Function
	End Class
End Namespace
VB   C#

Código Explicación

Definición de espacios de nombres y clases

El código comienza con sentencias using, que importan los espacios de nombres necesarios. El espacio de nombres GenerateQRCode.Controllers contiene la clase QrCodeController.

Controlador Constructor

La clase QrCodeController tiene un constructor que toma un parámetro IWebHostEnvironment. Este parámetro es inyectado por ASP.NET Core para gestionar tareas relacionadas con el alojamiento web.

Métodos de acción

Índice(): Este método devuelve una vista (presumiblemente una página HTML) cuando se accede. No parece estar directamente relacionado con la generación de códigos QR. CrearQRCode(QRCodeModel generateQRCode): Este método es el corazón de la lógica de generación de códigos QR. Recibe un objeto QRCodeModel. (que presumiblemente contiene el texto del código QR) como parámetro.

Dentro del método

Construye una ruta para guardar la imagen del código QR generado. Crea un objeto de código QR utilizando QrWriter.Write(generarQRCode.QRCodeTexto). Guarda el código QR como una imagen de mapa de bits. Construye una URL de imagen basada en los detalles de la petición web. Establece la propiedad ViewBag.QrCodeUri con la URL de la imagen. Si se produce alguna excepción durante este proceso, se lanza.

Generación de códigos QR

La generación del código QR se realiza con el método CreateQRCode. La función QrWriter.Write(generarQRCode.QRCodeTexto) crea un objeto de código QR basado en el texto proporcionado.

Ahorro de imágenes

El código QR generado se guarda como una imagen bitmap utilizando qrImage.SaveAs(filePath). La ruta del archivo de imagen se construye a partir de la ruta raíz de la web y el nombre de archivo deseado.

URL de la imagen

La imageUrl se construye utilizando el esquema, el host y la ruta base de la petición web. Esta URL apunta a la ubicación en la que se puede acceder a la imagen del código QR generado. En general, este controlador se encarga de generar el código QR, guardar la imagen y proporcionar una URL de la imagen para su uso posterior

Añadir vista al controlador

Para añadir una nueva vista, haz clic con el botón derecho en el método de acción CreateQRCode de la clase QrCodeController.

Cómo generar códigos QR en ASP .NET Core: Figura 10 - Añadir una nueva vista en la clase `QrCodeController`

Seleccione "Añadir vista" y, a continuación, "Vista Razor". Haga clic en el botón "Añadir".

Cómo generar códigos QR en ASP .NET Core: Figura 11 - Seleccione la opción Add View, luego Razor View, luego Add

A continuación, seleccione la plantilla "Crear" y la clase Modelo generada anteriormente.

Cómo generar códigos QR en ASP .NET Core: Figura 12 - Seleccione la plantilla `Create` generada anteriormente

Ahora reemplaza el siguiente código en la vista

@model GenerateQRCode.Models.QRCodeModel
@{
    ViewData["Title"] = "Generate QR Code";
}
<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
@model GenerateQRCode.Models.QRCodeModel
@{
    ViewData["Title"] = "Generate QR Code";
}
<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
model ReadOnly Property () As GenerateQRCode.Models.QRCodeModel
	ViewData("Title") = "Generate QR Code"
End Property
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> <div> <a asp-action="Index"> Clear</a> </div> @section Scripts
"img-thumbnail" /> </div> </form> </div> </div> (Of div) <a asp-action="Index"> Clear</a> </div> section Scripts
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> <div> <a asp-action
"@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> (Of div) <a asp-action
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class
"form-group"> <img src="@ViewBag.QrCodeUri" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src
"form-group"> </div> <div class="form-group"> <img src
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class
"text-danger"></span> </div> <div class="form-group"> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class
"QRCodeText" class="text-danger"></span> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class
"control-label"></label> <span asp-validation-for="QRCodeText" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for
"QRCodeText" class="control-label"></label> <span asp-validation-for
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class
"form-group"> <label asp-for="QRCodeText" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for
"text-danger"></div> <div class="form-group"> <label asp-for
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class
"ModelOnly" class="text-danger"></div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class
"CreateQRCode"> <div asp-validation-summary="ModelOnly" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary
"col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action
"row"> <div class="col-md-4"> <form asp-action
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend (Of h1) Generate QR Code</h1> (Of h4) QRCodeModel</h4> <hr /> <div Class="row"> <div class
	@
	If True Then
		Await Html.RenderPartialAsync("_ValidationScriptsPartial")
	End If
End Class
VB   C#

Haga lo mismo para el método de acción de índice también, de modo que cuando se inicia la aplicación, no va a lanzar un error para la solicitud POST.

Ahora en el program.cs cambia el siguiente código para hacer la vista anterior como ruta por defecto.

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
app.MapControllerRoute(name:= "default", pattern:= "{controller=QrCode}/{action=Index}")
VB   C#

Esta acción modificará la ruta por defecto desde HomeController a nuestro controlador QrCode.

Ahora, compila y ejecuta el proyecto.

Cómo generar códigos QR en ASP .NET Core: Figura 13 - Ejemplo de página de inicio del proyecto

Introduzca cualquier texto en el cuadro de texto y haga clic en "Crear". Esto creará un nuevo código QR como se muestra a continuación.

Cómo generar códigos QR en ASP .NET Core: Figura 14 - Introduzca cualquier texto y haga clic en crear para crear un nuevo código QR utilizando IronOCR

Añadir estilo al código QR

Las QrStyleOptions se utilizan para dar estilo a la generación del código QR.

[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
        // Create a QR Code obj
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px
            Margins = 10, // px
            Color = Color.YellowGreen
        };
        // Save QR Code as a any bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);
        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
        // Create a QR Code obj
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px
            Margins = 10, // px
            Color = Color.YellowGreen
        };
        // Save QR Code as a any bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);
        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
<HttpPost>
Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult
	Try
		Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode")
		If Not Directory.Exists(path) Then
			Directory.CreateDirectory(path)
		End If
		Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png")
		' Create a QR Code obj
		Dim qrCode As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
		Dim style As New QrStyleOptions With {
			.Dimensions = 300,
			.Margins = 10,
			.Color = Color.YellowGreen
		}
		' Save QR Code as a any bitmap
		Dim qrImage As AnyBitmap = qrCode.Save(style)
		' Save QR Code Bitmap to File
		qrImage.SaveAs(filePath)
		Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file
		Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName
		ViewBag.QrCodeUri = imageUrl
	Catch e1 As Exception
		Throw
	End Try
	Return View()
End Function
VB   C#

Salida

Cómo generar códigos QR en ASP .NET Core: Figura 15 - Modificación del color del código QR mediante programación

Licencia (prueba disponible)

Los desarrolladores que deseen probar IronQR disponen de una licencia de prueba aquí. Esta clave de licencia debe colocarse en el archivo appSettings.json. Al hacerlo, se eliminará la marca de agua que aparece en las imágenes anteriores. Esto eliminará la marca de agua que aparece en las imágenes anteriores.

{
"IronQR.License.LicenseKey" : "My key"
}

Conclusión

En este artículo, hemos explorado cómo generar códigos QR en ASP.NET Core utilizando IronQR. Aprovechando la potencia de IronQR, los desarrolladores pueden integrar fácilmente la funcionalidad de generación de códigos QR en sus aplicaciones web. Ya sea para la emisión de billetes, la autenticación o el intercambio de información, los códigos QR ofrecen una solución versátil para transmitir datos de forma eficaz. Con IronQR, crear y personalizar códigos QR en ASP.NET Core nunca ha sido tan fácil. Comience a incorporar la generación de códigos QR en sus proyectos ASP.NET Core y desbloquee un mundo de posibilidades para codificar y compartir datos de forma dinámica.

< ANTERIOR
Cómo usar .NET MAUI para escáner de código QR
SIGUIENTE >
Cómo escanear códigos QR en ASP .NET

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 16,538 Ver licencias >