Zum Fußzeileninhalt springen
IRONQR NUTZEN

Wie man QR-Codes in ASP.NET Core generiert

QR-Codes sind zu einem integralen Bestandteil der modernen Technologie geworden und bieten eine praktische Möglichkeit, Informationen zu speichern und zu übertragen. In der Webentwicklung bieten QR-Code-Generatoren wie der, den wir mit IronQR in ASP.NET Core implementieren, robuste Möglichkeiten für die dynamische Erstellung von QR-Codes. QR-Code-Generatoren sind von unschätzbarem Wert für verschiedene Anwendungen wie Ticketing-Systeme, Authentifizierung, Bestandsverwaltung und mehr. Dieser Artikel befasst sich mit dem Prozess der Erstellung von QR-Codes in ASP.NET Core mit IronQR, einer leistungsstarken Bibliothek, die für diesen Zweck entwickelt wurde. ASP.NET Core ist ein vielseitiges Framework zum Erstellen von Webanwendungen und bietet robuste Möglichkeiten zur Generierung von QR-Codes. In this article, we'll delve into the process of creating QR codes in ASP.NET Core using IronQR, a powerful library for QR code generation from Iron Software.

Wie man QR-Codes in ASP.NET Core generiert

  1. Erstellen Sie ein ASP.Net-Projekt mit Visual Studio
  2. Installieren Sie die IronQR-Bibliothek über den Paket-Manager
  3. QR-Code generieren
  4. QR-Code mit Formatierung generieren

Verständnis von IronQR

IronQR ist eine leistungsstarke QR-Code-Generierungsbibliothek für .NET-Anwendungen. Es bietet eine einfache und intuitive API für die Erstellung von QR-Codes mit verschiedenen Anpassungsoptionen. IronQR unterstützt .NET Standard, wodurch es mit einer Vielzahl von Plattformen kompatibel ist, einschließlich ASP.NET Core. Mit IronQR können Entwickler problemlos QR-Codes mit unterschiedlichen Datentypen, Fehlerkorrekturstufen, Größen und Formaten erstellen.

Hauptmerkmale

1. Lesen und Erstellen von QR-Codes

IronQR ermöglicht es Ihnen, QR-Codes einfach zu generieren und zu lesen. Egal, ob Sie QR-Codes dynamisch erstellen oder Informationen aus bestehenden extrahieren möchten, diese Bibliothek bietet Ihnen Unterstützung.

2. Benutzerfreundliche API

Die Bibliothek bietet eine benutzerfreundliche API, mit der Entwickler Barcode-Funktionalität schnell in ihre .NET-Projekte integrieren können. Sie können in wenigen Minuten mit der Arbeit an QR-Codes beginnen.

3. Kompatibilität

IronQR unterstützt verschiedene .NET-Versionen, darunter:

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

Es deckt eine breite Palette von Projekttypen ab, einschließlich Web (Blazor & WebForms), Mobil (Xamarin & MAUI), Desktop (WPF & MAUI) und Konsolenanwendungen.

4. Machine Learning-Modell zur QR-Erkennung

IronQR verwendet ein fortschrittliches benutzerdefiniertes Machine-Learning-Modell zur Erkennung von QR-Codes. Dies gewährleistet eine genaue und zuverlässige Code-Erkennung. Zusätzlich gibt es eine Slim-Mode-Option (ohne ML) für diejenigen, die einen leichten Ansatz bevorzugen.

5. QR-Codes lesen

Sie können QR-Codes aus verschiedenen Bildformaten lesen, darunter:

  1. Bilder (jpg, png, svg, bmp)
  2. Mehrseitige Bilder (gif, tif, tiff)
  3. System.Drawing-Bitmaps
  4. IronDrawing-Bilder (AnyBitmap)

6. QR-Codes schreiben

IronQR ermöglicht es Ihnen, QR-Codes für verschiedene Dokumenttypen zu schreiben, wie:

  1. Bilder (jpg, png, gif, tiff, bmp)
  2. System.Drawing-Bilder
  3. Streams (MemoryStream, byte[])
  4. PDF (Stempel auf bestehendem PDF)

7. QR-Codes gestalten

Anpassen von QR-Codes durch Vergrößern, Anpassen von Rändern und Rahmen, Neufärben, Hinzufügen von Logos

8. Fehlerbehandlung und Korrektur

IronQR liefert detaillierte Fehlermeldungen und unterstützt benutzerdefinierte QR-Fehlerkorrektur-Stufen.

Mit diesem Wissen lassen Sie uns mit der Anwendung zur Generierung von QR-Codes in ASP.NET Core beginnen.

Schritt 1: Erstellen Sie ein neues ASP.NET-Projekt mit Visual Studio

Bevor wir mit der QR-Code-Generierung beginnen, lassen Sie uns ein neues ASP.NET Core-Projekt einrichten. Hier sind die Schritte, um ein neues Projekt zu initiieren:

Beginnen Sie indem Sie ein neues Projekt in Visual Studio erstellen und das ASP.Net Core Web App-Anwendungsvorlage auswählen

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 1 - Wählen Sie die ASP.NET CORE-Webanwendungsvorlage aus

Geben Sie Projektname und Speicherort an

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 2 - Nennen Sie das Projekt und den Ort, an dem Sie es speichern möchten

Wählen Sie die erforderliche .NET-Version aus.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 3 - Wählen Sie die richtige .NET-Version aus.

Klicken Sie auf den Button "Erstellen", um den Anwendungscode aus der Vorlage zu generieren

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 4 - Klicken Sie auf den "Erstellen"-Button, um den Vorlagencode zu generieren

Schritt 2: Installieren Sie die IronQR-Bibliothek über den Paket-Manager

Installieren Sie die IronQR-Bibliothek über den Visual Studio Paket-Manager, wie unten gezeigt.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 5 - Suchen Sie IronOCR mit dem Visual Studio Paket-Manager und installieren Sie es

IronQR kann auch mit dem NuGet Paket-Manager installiert werden.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 6 - Suchen Sie IronOCR mit dem NuGet Paket-Manager

Schritt 3: Generieren Sie einen QR-Code

Lassen Sie uns nun eine QR-Code-App erstellen.

Erstellen Sie QRCode Modell

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

Erstellen Sie einen QR-Code-Controller

Um einen neuen Controller hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Controller-Ordner und geben Sie einen Namen an, wie unten gezeigt.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 7 - Fügen Sie einen neuen Controller hinzu, indem Sie auf den Ordner klicken und ihm einen Namen geben

Wählen Sie den leeren Controller aus.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 8 - Klicken Sie auf den leeren Controller im Prompt

Geben Sie einen Namen an.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 9 - Nennen Sie den Controller

Als nächstes integrieren Sie den folgenden Code in den Controller.

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

Code Erklärung

Namespace- und Klassendefinition

Der Code beginnt mit Using-Anweisungen, die notwendige Namespaces importieren. Der Namespace GenerateQRCode.Controllers enthält die Klasse QrCodeController.

Controller-Konstruktor

Die Klasse QrCodeController verfügt über einen Konstruktor, der einen IWebHostEnvironment-Parameter übernimmt. Dieser Parameter wird von ASP.NET Core für die Verwaltung webhostingbezogener Aufgaben injiziert.

Aktionsmethoden

  • Index(): Diese Methode gibt eine Ansicht (vermutlich eine HTML-Seite) zurück, wenn sie aufgerufen wird. Sie scheint nicht direkt mit der QR-Code-Generierung verbunden zu sein.
  • CreateQRCode(QRCodeModel generateQRCode): Diese Methode ist das Herzstück der QR-Code-Generierungslogik. Sie empfängt ein QRCodeModel-Objekt (vermutlich mit dem QR-Code-Text) als Parameter.

Im Inneren der Methode

  • Konstruiert einen Pfad zum Speichern des generierten QR-Code-Bildes.
  • Erstellt ein QR-Code-Objekt mit QrWriter.Write(generateQRCode.QRCodeText).
  • Speichert den QR-Code als Bitmap-Bild.
  • Konstruiert eine Bild-URL basierend auf den Webanfrage-Details.
  • Setzt die Eigenschaft ViewBag.QrCodeUri mit der Bild-URL.
  • Wenn während dieses Prozesses irgendwelche Ausnahmen auftreten, werden sie geworfen.

QR Code-Generierung

Die eigentliche QR-Code-Generierung erfolgt innerhalb der CreateQRCode-Methode. Der Anruf QrWriter.Write(generateQRCode.QRCodeText) erstellt ein QR-Code-Objekt basierend auf dem bereitgestellten Text.

Bilder speichern

Der generierte QR-Code wird als Bitmap-Bild mit qrImage.SaveAs(filePath) gespeichert. Der Bilddateipfad wird basierend auf dem Web-Root-Pfad und dem gewünschten Dateinamen konstruiert.

Bild-URL

Die imageUrl wird mithilfe der Schema-, Host- und Pfadbasis der Webanfrage konstruiert. Diese URL zeigt auf den Ort, an dem das generierte QR-Code-Bild abgerufen werden kann. Insgesamt bearbeitet dieser Controller die QR-Code-Generierung, speichert das Bild und stellt eine Bild-URL für die weitere Verwendung bereit.

Ansicht zum Controller hinzufügen

Um eine neue Ansicht hinzuzufügen, klicken Sie mit der rechten Maustaste auf die CreateQRCode-Aktionsmethode in der Klasse QrCodeController.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 10 - Fügen Sie eine neue Ansicht in der Klasse `QrCodeController` hinzu

Wählen Sie "View hinzufügen", dann "Razor View" aus. Klicken Sie auf die Schaltfläche "Hinzufügen".

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 11 - Wählen Sie die Option Ansicht hinzufügen, dann Razor View, dann Hinzufügen

Wählen Sie dann die "Create"-Vorlage und die zuvor generierte Modellklasse aus.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 12 - Wählen Sie die zuvor generierte `Create`-Vorlage

Ersetzen Sie jetzt den folgenden Code in der Ansicht

@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

Tun Sie dasselbe für die Index-Aktionsmethode, damit beim Start der App kein Fehler für die POST-Anfrage auftritt.

Ändern Sie jetzt im Program.cs den folgenden Code, um die obige Ansicht als Standardroute festzulegen.

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

Diese Aktion ändert die Standardroute vom HomeController zu unserem QrCodeController.

Kompilieren und führen Sie das Projekt jetzt aus.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 13 - Beispielhomepage aus dem Projekt

Geben Sie beliebigen Text in das Textfeld ein und klicken Sie auf 'Erstellen'. Dies wird einen neuen QR-Code erzeugen, wie unten gezeigt.

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 14 - Geben Sie einen beliebigen Text ein und klicken Sie auf Erstellen, um einen neuen QR-Code mit IronQR zu erstellen

QR-Code hinzufügen

QrStyleOptions werden verwendet, um die QR-Code-Generierung zu gestalten.

[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

Ausgabe

Wie man QR-Codes in ASP .NET Core generiert: Abbildung 15 - Ändern der QR-Code-Farbe programmatisch

Lizenz (Testversion verfügbar)

Für Entwickler, die IronQR testen möchten, ist hier eine Testlizenz verfügbar. Dieser Lizenzschlüssel muss in der appSettings.json-Datei platziert werden. Dies entfernt das in den obigen Bildern gezeigte Wasserzeichen.

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

Abschluss

In diesem Artikel haben wir untersucht, wie man QR-Codes in ASP.NET Core mit IronQR generiert. Durch das Nutzen der Leistungsfähigkeit von IronQR können Entwickler die QR-Code-Generierungsfunktionalität leicht in ihre Webanwendungen integrieren. Ob für Ticketing, Authentifizierung oder Informationsaustausch, QR-Codes bieten eine vielseitige Lösung für die effiziente Übermittlung von Daten. Mit IronQR war es noch nie so einfach, QR-Codes in ASP.NET Core zu erstellen und anzupassen. Beginnen Sie damit, die Generierung von QR-Codes in Ihre ASP.NET Core-Projekte zu integrieren, und entdecken Sie eine Welt voller Möglichkeiten für dynamische Datenkodierung und -austausch.

Häufig gestellte Fragen

Wie kann ich QR-Codes in ASP.NET Core generieren?

Um QR-Codes in ASP.NET Core zu generieren, können Sie die IronQR-Bibliothek verwenden. Erstellen Sie zunächst ein neues ASP.NET-Projekt in Visual Studio, installieren Sie IronQR über den Paket-Manager und implementieren Sie den Code zur Generierung von QR-Codes mit der benutzerfreundlichen API.

Welche Anpassungsoptionen gibt es für QR-Codes in ASP.NET Core?

IronQR bietet mehrere Anpassungsoptionen für QR-Codes in ASP.NET Core, einschließlich Größenänderung, Anpassung der Ränder, Farbänderung und Hinzufügen von Logos. Diese können über die QrStyleOptions Klasse verwaltet werden.

Wie funktioniert die Fehlerkorrektur bei der QR-Code-Generierung mit ASP.NET Core?

IronQR ermöglicht es Ihnen, die Fehlerkorrekturstufen bei der Generierung von QR-Codes in ASP.NET Core festzulegen. Dies stellt sicher, dass QR-Codes die gewünschte Fehlerresilienz aufweisen, was für ein zuverlässiges Scannen unerlässlich ist.

Kann ich QR-Codes aus verschiedenen Bildformaten in ASP.NET Core lesen?

Ja, mit IronQR in ASP.NET Core können Sie QR-Codes aus verschiedenen Bildformaten wie jpg, png, svg, bmp, gif, tif und tiff sowie System.Drawing Bitmaps und IronDrawing Images (AnyBitmap) lesen.

Ist es möglich, IronQR ohne eine Vollversion zu testen?

Ja, Sie können eine Testlizenz von IronQR von der Iron Software-Website erhalten. Die Testversion ermöglicht es Ihnen, die Bibliothek zu testen und Wasserzeichen von generierten QR-Codes während der Testphase zu entfernen, indem Sie die Lizenz in der Datei appSettings.json platzieren.

Welche Vorteile bieten QR-Codes in Webanwendungen?

QR-Codes sind für Webanwendungen vorteilhaft, da sie eine effiziente Datenspeicherung und -übertragung ermöglichen. Sie sind besonders nützlich in Anwendungen wie Ticketingsystemen, Authentifizierung und Bestandsverwaltung und bieten eine dynamische Möglichkeit, Informationen zu kodieren und zu teilen.

Wie verbessert maschinelles Lernen die QR-Code-Erkennung in ASP.NET Core?

IronQR nutzt ein fortschrittliches, benutzerdefiniertes maschinelles Lernmodell für die QR-Code-Erkennung, um eine hohe Genauigkeit und Zuverlässigkeit bei der Codierungserkennung zu gewährleisten. Für Benutzer, die eine leichtere Lösung bevorzugen, steht auch ein nicht-ML Slim Mode zur Verfügung.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen