Passer au contenu du pied de page
UTILISATION D'IRONQR

Comment générer des codes QR dans ASP.NET Core

Les codes QR sont devenus partie intégrante de la technologie moderne, offrant un moyen pratique de stocker et de transmettre des informations. En développement web, les générateurs de codes QR comme celui que nous allons implémenter avec IronQR dans ASP.NET Core offrent des fonctionnalités robustes pour la création dynamique de codes QR. Les générateurs de codes QR sont indispensables pour diverses applications telles que les systèmes de billetterie, l'authentification, la gestion des stocks, et bien plus encore. Cet article explore le processus de création de codes QR dans ASP.NET Core à l'aide d'IronQR, une bibliothèque puissante conçue à cet effet. ASP.NET Core, framework polyvalent pour la création d'applications web, offre des fonctionnalités robustes pour la génération de codes QR. Dans cet article, nous allons explorer le processus de création de codes QR dans ASP.NET Core à l'aide d'IronQR , une puissante bibliothèque de génération de codes QR d' Iron Software .

Comment générer des codes QR dans ASP.NET Core

  1. Créez un projet ASP.Net à l'aide de Visual Studio.
  2. Installez la bibliothèque IronQR à partir du gestionnaire de paquets.
  3. Générer un code QR
  4. Générer un code QR avec mise en forme

Comprendre IronQR

IronQR est une bibliothèque de génération de codes QR haute performance pour les applications .NET. Elle fournit une API simple et intuitive pour générer des codes QR avec diverses options de personnalisation. IronQR prend en charge .NET Standard, ce qui le rend compatible avec un large éventail de plateformes, notamment ASP.NET Core. Avec IronQR, les développeurs peuvent générer sans effort des codes QR avec différents types de données, niveaux de correction d'erreurs, tailles et formats.

Caractéristiques principales

1. Lecture et création de codes QR

IronQR vous permet de générer et de lire facilement les codes QR. Que vous ayez besoin de créer des codes QR dynamiquement ou d'extraire des informations de codes existants, cette bibliothèque répond à tous vos besoins.

2. API conviviale

La bibliothèque fournit une API conviviale qui permet aux développeurs d'intégrer rapidement la fonctionnalité des codes-barres dans leurs projets .NET. Vous pouvez commencer à utiliser les codes QR en quelques minutes seulement.

3. Compatibilité

IronQR prend en charge différentes versions de .NET, notamment :

  1. C#, VB.NET, F#
  2. .NET Core (8, 7, 6, 5 et 3.1+)
  3. .NET Standard (2.0+)
  4. .NET Framework (4.6.2+)

Il couvre un large éventail de types de projets, notamment les applications web (Blazor et WebForms), mobiles (Xamarin et MAUI), de bureau (WPF et MAUI) et les applications console.

4. Modèle d'apprentissage automatique pour la détection des codes QR

IronQR utilise un modèle d'apprentissage automatique personnalisé et avancé pour détecter les codes QR. Cela garantit une reconnaissance de code précise et fiable. De plus, une option Slim Mode (non-ML) est disponible pour ceux qui préfèrent une approche légère.

5. Lecture des codes QR

Vous pouvez lire les codes QR à partir de différents formats d'image, notamment :

  1. Images (jpg, png, svg, bmp)
  2. Images multipages (gif, tif, tiff)
  3. System.Drawing d'images bitmap
  4. Images IronDrawing ( AnyBitmap )

6. Écriture des codes QR

IronQR vous permet de créer des codes QR pour différents types de documents, tels que :

  1. Images (jpg, png, gif, tiff, bmp)
  2. System.Drawing d'images
  3. Flux ( MemoryStream , byte[] )
  4. PDF (Tampon sur PDF existant)

7. Style des codes QR

Personnalisez les codes QR en les redimensionnant, en ajustant les marges et les bordures, en changeant les couleurs et en ajoutant des logos.

8. Gestion et correction des erreurs

IronQR fournit des messages d'erreur détaillés et prend en charge des niveaux de correction d'erreurs QR personnalisés.

Forts de ces connaissances, commençons par l'application permettant de générer un code QR en ASP.NET Core.

Étape 1 : Créez un nouveau projet ASP.NET à l'aide de Visual Studio

Avant de nous plonger dans la génération de codes QR, commençons par configurer un nouveau projet ASP.NET Core. Voici les étapes à suivre pour lancer un nouveau projet :

Commencez par créer un nouveau projet dans Visual Studio et sélectionnez le modèle d'application Web ASP.Net Core.

Comment générer des codes QR dans ASP.NET Core : Figure 1 - Sélectionner le modèle d'application Web ASP.NET Core

Indiquez le nom et l'emplacement du projet.

Comment générer des codes QR dans ASP.NET Core : Figure 2 - Nommez le projet et l'emplacement où vous souhaitez enregistrer.

Sélectionnez la version .NET requise.

! Comment générer des codes QR dans ASP .NET Core : Figure 3 - Sélectionnez la version .NET appropriée.

Cliquez sur le bouton " Créer " pour générer le code de l'application à partir du modèle.

Comment générer des codes QR dans ASP.NET Core : Figure 4 - Cliquez sur le bouton " Créer " pour générer le code du modèle

Étape 2 : Installez la bibliothèque IronQR à partir du gestionnaire de paquets

Installez la bibliothèque IronQR à partir du gestionnaire de packages de Visual Studio comme indiqué ci-dessous.

Comment générer des codes QR dans ASP.NET Core : Figure 5 - Recherchez IronOCR à l'aide du gestionnaire de packages de Visual Studio et installez-le

IronQR peut également être installé à l'aide du gestionnaire de packages NuGet.

Comment générer des codes QR dans ASP.NET Core : Figure 6 - Recherche d'IronOCR à l'aide du gestionnaire de packages NuGet

Étape 3 : Générer un code QR

Maintenant, créons une application de code QR.

Créer un modèle 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
$vbLabelText   $csharpLabel

Créer un contrôleur de codes QR

Pour ajouter une nouvelle manette, cliquez avec le bouton droit sur le dossier des manettes et indiquez un nom comme indiqué ci-dessous.

Comment générer des codes QR dans ASP.NET Core : Figure 7 - Ajoutez un nouveau contrôleur en cliquant sur le dossier et donnez-lui un nom

Sélectionnez le contrôleur vide.

Comment générer des codes QR dans ASP.NET Core : Figure 8 - Cliquez sur " Contrôleur vide " dans l'invite

Indiquez un nom.

Comment générer des codes QR dans ASP.NET Core : Figure 9 - Nommer le contrôleur

Ensuite, intégrez le code suivant dans le contrôleur.

using GenerateQRCode.Models;
using IronSoftware.Drawing;
using IronQr;
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 IronSoftware.Drawing;
using IronQr;
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 IronSoftware.Drawing
Imports IronQr
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
$vbLabelText   $csharpLabel

Explication du code

Définition d'espace de noms et de classe

Le code commence par des instructions using, qui importent les espaces de noms nécessaires. L'espace de noms GenerateQRCode.Controllers contient la classe QrCodeController .

Constructeur de contrôleur

La classe QrCodeController possède un constructeur qui prend un paramètre IWebHostEnvironment . Ce paramètre est injecté par ASP.NET Core pour gérer les tâches liées à l'hébergement web.

Méthodes d'action

  • Index() : Cette méthode renvoie une vue (vraisemblablement une page HTML) lorsqu'elle est accédée. Cela ne semble pas être directement lié à la génération de codes QR.
  • CreateQRCode(QRCodeModel generateQRCode) : Cette méthode est au cœur de la logique de génération du code QR. Il reçoit en paramètre un objet QRCodeModel (contenant vraisemblablement le texte du code QR).

À l'intérieur de la méthode

  • Crée un chemin pour enregistrer l'image du code QR généré.
  • Crée un objet code QR à l'aide de QrWriter.Write(generateQRCode.QRCodeText) .
  • Enregistre le code QR sous forme d'image bitmap.
  • Construit une URL d'image à partir des détails de la requête web.
  • Définit la propriété ViewBag.QrCodeUri avec l'URL de l'image.
  • Si des exceptions surviennent au cours de ce processus, elles sont levées.

Génération de codes QR

La génération du code QR proprement dite a lieu dans la méthode CreateQRCode . L'appel QrWriter.Write(generateQRCode.QRCodeText) crée un objet code QR basé sur le texte fourni.

Enregistrement d'image

Le code QR généré est enregistré sous forme d'image bitmap à l'aide de qrImage.SaveAs(filePath) . Le chemin d'accès au fichier image est construit à partir du chemin racine du site web et du nom de fichier souhaité.

URL de l'image

L' imageUrl est construite à partir du schéma, de l'hôte et du chemin de base de la requête web. Cette URL indique l'emplacement où l'image du code QR généré peut être consultée. Globalement, ce contrôleur gère la génération du code QR, l'enregistrement de l'image et la fourniture d'une URL d'image pour une utilisation ultérieure.

Ajouter une vue au contrôleur

Pour ajouter une nouvelle vue, cliquez avec le bouton droit sur la méthode d'action CreateQRCode dans la classe QrCodeController .

Comment générer des codes QR dans ASP.NET Core : Figure 10 - Ajouter une nouvelle vue dans la classe QrCodeController

Sélectionnez " Ajouter une vue ", puis " Vue Razor ". Cliquez sur le bouton " Ajouter ".

Comment générer des codes QR dans ASP.NET Core : Figure 11 - Sélectionnez l'option Ajouter une vue, puis Vue Razor, puis Ajouter

Ensuite, sélectionnez le modèle "Créer" et la classe Modèle générée précédemment.

Comment générer des codes QR dans ASP.NET Core : Figure 12 - Sélectionnez le modèle Create généré précédemment

Remplacez maintenant le code ci-dessous dans la vue

@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>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </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>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action="Index"> Clear</a> </div> @section Scripts
"Your QR Code will appear here." /> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action
"img-thumbnail" alt="Your QR Code will appear here." /> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt
"@ViewBag.QrCodeUri" class="img-thumbnail" alt
'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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src
"btn btn-primary"> Create QR Code</a> </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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class
"#" class="btn btn-primary"> Create QR Code</a> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class
"form-group"> <a href="#" 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href
"text-danger"></span> </div> <div class="form-group"> <a href
'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="control-label"></label> <input asp-for="QRCodeText" class="form-control" /> <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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class
"form-control" /> <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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for
"QRCodeText" class="form-control" /> <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 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> <input asp-for="QRCodeText" class
"control-label"></label> <input 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 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> <input asp-for
"QRCodeText" class="control-label"></label> <input 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 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 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 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 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 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 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 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
$vbLabelText   $csharpLabel

Faites de même pour la méthode d'action index, afin que l'application ne génère pas d'erreur lors du lancement de la requête POST.

Dans le Program.cs , modifiez le code suivant pour que la vue ci-dessus devienne la route par défaut.

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

Cette action modifiera la route par défaut de HomeController vers notre QrCodeController .

Maintenant, compilez et exécutez le projet.

Comment générer des codes QR dans ASP.NET Core : Figure 13 - Exemple de page d'accueil du projet

Saisissez du texte dans la zone de texte et cliquez sur " Créer ". Cela créera un nouveau code QR comme indiqué ci-dessous.

Comment générer des codes QR avec ASP.NET Core : Figure 14 - Saisissez du texte et cliquez sur " Créer " pour générer un nouveau code QR avec IronQR.

Ajouter du style aux codes QR

QrStyleOptions permettent de styliser la génération du code 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 object
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a 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 object
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a 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 object
		Dim qrCode As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
		Dim style As New QrStyleOptions With {
			.Dimensions = 300,
			.Margins = 10,
			.Color = Color.YellowGreen
		}

		' Save QR Code with style options as a 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
$vbLabelText   $csharpLabel

Sortie

Comment générer des codes QR dans ASP.NET Core : Figure 15 - Modification de la couleur du code QR par programmation

Licence (Essai disponible)

Pour les développeurs qui souhaitent tester IronQR, une licence d'essai est disponible ici . Cette clé de licence doit être placée dans le fichier appSettings.json . Cela permettra de supprimer le filigrane visible sur les images ci-dessus.

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

Conclusion

Dans cet article, nous avons exploré comment générer des codes QR dans ASP.NET Core en utilisant IronQR. En tirant parti de la puissance d'IronQR, les développeurs peuvent facilement intégrer la fonctionnalité de génération de codes QR dans leurs applications web. Que ce soit pour la billetterie, l'authentification ou le partage d'informations, les codes QR offrent une solution polyvalente pour transmettre efficacement des données. Avec IronQR, créer et personnaliser des codes QR dans ASP.NET Core n'a jamais été aussi simple. Commencez à intégrer la génération de codes QR dans vos projets ASP.NET Core et découvrez un monde de possibilités pour l'encodage et le partage dynamiques de données.

Questions Fréquemment Posées

Comment puis-je générer des codes QR dans ASP.NET Core ?

Pour générer des codes QR dans ASP.NET Core, vous pouvez utiliser la bibliothèque IronQR. Commencez par créer un nouveau projet ASP.NET dans Visual Studio, installez IronQR via le gestionnaire de packages et implémentez le code pour générer des codes QR en utilisant son API conviviale.

Quelles options de personnalisation sont disponibles pour les codes QR dans ASP.NET Core ?

IronQR offre plusieurs options de personnalisation pour les codes QR dans ASP.NET Core, y compris le redimensionnement, l'ajustement des marges, le changement de couleurs et l'ajout de logos. Ceux-ci peuvent être gérés en utilisant la classe QrStyleOptions.

Comment fonctionne la correction d'erreur lors de la génération de codes QR avec ASP.NET Core ?

IronQR vous permet de gérer les niveaux de correction d'erreur lors de la génération de codes QR dans ASP.NET Core. Cela garantit que les codes QR ont le niveau souhaité de résistance aux erreurs, essentiel pour un balayage fiable.

Puis-je lire des codes QR à partir de différents formats d'image dans ASP.NET Core ?

Oui, avec IronQR dans ASP.NET Core, vous pouvez lire des codes QR à partir de divers formats d'image tels que jpg, png, svg, bmp, gif, tif et tiff, ainsi que des Bitmaps System.Drawing et des Images IronDrawing (AnyBitmap).

Est-il possible de tester IronQR sans licence complète ?

Oui, vous pouvez obtenir une licence d'essai de IronQR sur le site Web de Iron Software. L'essai vous permet de tester la bibliothèque et de supprimer les filigranes des codes QR générés pendant la phase de test en plaçant la licence dans le fichier appSettings.json.

Quels sont les avantages d'utiliser des codes QR dans les applications web ?

Les codes QR sont bénéfiques pour les applications web car ils permettent un stockage et une transmission efficaces des données. Ils sont particulièrement utiles dans des applications telles que les systèmes de billetterie, l'authentification et la gestion des stocks, offrant un moyen dynamique de coder et de partager des informations.

Comment l'apprentissage automatique améliore-t-il la détection des codes QR dans ASP.NET Core ?

IronQR utilise un modèle d'apprentissage automatique personnalisé avancé pour la détection des codes QR, garantissant une haute précision et fiabilité dans la reconnaissance des codes. Pour les utilisateurs qui préfèrent une solution plus légère, un mode Slim non-ML est également disponible.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite