Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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 utilizandoIronQRuna potente biblioteca para la generación de códigos QR a partir deIron Software.
Crear un proyecto ASP.Net con Visual Studio
InstaleIronQR biblioteca del Gestor de paquetes
Generar código QR
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.
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.
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.
IronQR es compatible con varias versiones de .NET, entre ellas
C#, VB.NET, F#
.NET Core(8, 7, 6, 5 y 3.1+.)
.NET Standard(2.0+)
.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.
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.
Puede leer códigos QR de varios formatos de imagen, incluidos:
Imágenes(jpg, png, svg, bmp)
Imágenes multipágina(gif, tif, tiff)
Mapas de bits `System.Drawing
IronQR le permite escribir códigos QR para diferentes tipos de documentos, tales como:
Imágenes(jpg, png, gif, tiff, bmp)
Imágenes `System.Drawing
Corrientes(MemoryStream
, byte[]
)
Personaliza los códigos QR cambiando el tamaño, ajustando márgenes y bordes, cambiando el color y añadiendo logotipos.
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.
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
Nombre y ubicación del proyecto
Seleccione la versión .NET necesaria.
Haga clic en el botón "crear" para generar el código de la aplicación a partir de la plantilla
InstaleIronQR de Visual Studio Package Manager como se muestra a continuación.
IronQR también puede instalarse mediante NuGet Package Manager.
Ahora, vamos a crear una aplicación de código QR.
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
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.
Seleccione el controlador vacío.
Proporcione un nombre.
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
El código comienza con sentencias using, que importan los espacios de nombres necesarios. El espacio de nombres GenerateQRCode.Controllers
contiene la clase QrCodeController
.
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.
Í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.
Construye una ruta para guardar la imagen del código QR generado. Crea un objeto de código QR utilizando QrWriter.Write(generateQRCode.QRCodeText)
. 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.
La generación del código QR se realiza con el método CreateQRCode
. La función QrWriter.Write(generateQRCode.QRCodeText)
crea un objeto de código QR basado en el texto proporcionado.
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.
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
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
.
Seleccione "Añadir vista" y, a continuación, "Vista Razor". Haga clic en el botón "Añadir".
A continuación, seleccione la plantilla "Crear" y la clase Modelo 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
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}")
Esta acción modificará la ruta por defecto desde HomeController
a nuestro controlador QrCode
.
Ahora, compila y ejecuta el 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.
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
Los desarrolladores que deseen probar IronQR disponen de una licencia de pruebaaquí. 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"
}
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.
9 productos API .NET para sus documentos de oficina