Jak generować kody QR w ASP .NET Core
Kody QR stały się integralną częścią nowoczesnej technologii, oferując wygodny sposób przechowywania i przesyłania informacji. W tworzeniu stron internetowych generatory kodów QR, takie jak ten, który zaimplementujemy przy użyciu IronQR w ASP.NET Core, zapewniają solidne możliwości dynamicznego tworzenia kodów QR. Generatory kodów QR są nieocenione dla różnych zastosowań, takich jak systemy biletowe, uwierzytelnianie, zarządzanie zapasami i inne. Ten artykuł zgłębia proces tworzenia kodów QR w ASP.NET Core przy użyciu IronQR, potężnej biblioteki zaprojektowanej do tego celu. ASP.NET Core, będąc wszechstronnym frameworkiem do budowy aplikacji internetowych, oferuje solidne możliwości generowania kodów QR. W tym artykule zgłębimy proces tworzenia kodów QR w ASP.NET Core, używając IronQR, potężnej biblioteki do generowania kodów QR od Iron Software.
Jak wygenerować kody QR w ASP.NET Core
- Utwórz projekt ASP.Net przy użyciu Visual Studio
- Zainstaluj bibliotekę IronQR z Menedżera Pakietów
- Wygeneruj kod QR
- Wygeneruj kod QR z formatowaniem
Rozumienie IronQR
IronQR to wysokowydajna biblioteka generowania kodów QR dla aplikacji .NET. Zapewnia prosty i intuicyjny interfejs API do generowania kodów QR z różnymi opcjami dostosowywania. IronQR wspiera .NET Standard, co czyni go kompatybilnym z szerokim zakresem platform, w tym ASP.NET Core. Dzięki IronQR deweloperzy mogą łatwo generować kody QR z różnymi typami danych, poziomami korekcji błędów, rozmiarami i formatami.
Kluczowe cechy
1. Odczytywanie i tworzenie kodów QR
IronQR umożliwia łatwe generowanie i odczytywanie kodów QR. Niezależnie od tego, czy musisz dynamicznie tworzyć kody QR, czy też wyciągać informacje z istniejących, ta biblioteka spełni twoje potrzeby.
2. Przyjazne dla użytkownika API
Biblioteka zapewnia przyjazne dla użytkownika API, które pozwala deweloperom szybko integrować funkcjonalność kodów kreskowych w ich projektach .NET. Możesz zacząć pracować z kodami QR w zaledwie kilka minut.
3. Kompatybilność
IronQR obsługuje różne wersje .NET, w tym:
- C#, VB.NET, F#
- .NET Core (8, 7, 6, 5, and 3.1+)
- .NET Standard (2.0+)
- .NET Framework (4.6.2+)
Pokrywa szeroki zakres typów projektów, w tym web (Blazor i WebForms), mobile (Xamarin i MAUI), desktop (WPF i MAUI) oraz aplikacje konsolowe.
4. Model Uczenia Maszynowego do Wykrywania Kodów QR
IronQR wykorzystuje zaawansowany, niestandardowy model Uczenia Maszynowego do wykrywania kodów QR. Zapewnia to dokładne i niezawodne rozpoznawanie kodu. Dodatkowo, dostępna jest opcja Slim Mode (bez ML) dla tych, którzy wolą lekkie podejście.
5. Odczytywanie Kodów QR
Możesz odczytywać kody QR z różnych formatów obrazów, w tym:
- Obrazy (jpg, png, svg, bmp)
- Obrazy wielostronicowe (gif, tif, tiff)
System.DrawingBitmaps- IronDrawing Images (
AnyBitmap)
6. Pisanie Kodów QR
IronQR pozwala zapisywać kody QR dla różnych typów dokumentów, takich jak:
- Images (jpg, png, gif, tiff, bmp)
System.DrawingImages- Strumienie (
MemoryStream,byte[]) - PDF (stamp na istniejącym PDF)
7. Stylizacja Kodów QR
Dostosuj kody QR poprzez Zmianę rozmiaru, Regulację marginesów i obramowań, Przefarbowanie, Dodanie logo
8. Obsługa Błędów i Korekcji
IronQR zapewnia szczegółowe komunikaty błędów i wspiera niestandardowe poziomy korekcji błędów QR.
Z tą wiedzą, zacznijmy z aplikacją do generowania kodu QR w ASP.NET Core.
Krok 1: Utwórz nowy projekt ASP.NET przy użyciu Visual Studio
Zanim zagłębimy się w generowanie kodu QR, skonfigurujmy nowy projekt ASP.NET Core. Oto kroki do zainicjowania nowego projektu:
Rozpocznij od utworzenia nowego projektu w Visual Studio i wybrania szablonu aplikacji ASP.Net Core Web App

Podaj nazwę projektu i lokalizację

Wybierz wymaganą wersję .NET.

Kliknij przycisk "utwórz", aby wygenerować kod aplikacji z szablonu

Krok 2: Zainstaluj bibliotekę IronQR z Menedżera Pakietów
Zainstaluj bibliotekę IronQR z Menedżera Pakietów Visual Studio jak pokazano poniżej.

IronQR można również zainstalować za pomocą Menedżera Pakietów NuGet.

Krok 3: Wygeneruj Kod QR
Teraz, utwórzmy aplikację do kodu QR.
Utwórz QRCode Model
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
Stwórz kontroler do kodu QR
Aby dodać nowy kontroler, kliknij prawym przyciskiem myszy na folder kontrolera i podaj nazwę, jak pokazano poniżej.

Wybierz Pusty Kontroler.

Podaj nazwę.

Następnie zintegrować poniższy kod z kontrolerem.
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
Wyjaśnienie kodu
Definicja Przestrzeni Nazw i Klasy
Kod rozpoczyna się od deklaracji using, które importują niezbędne przestrzenie nazw. Przestrzeń nazw GenerateQRCode.Controllers zawiera klasę QrCodeController.
Konstruktor Kontrolera
Klasa QrCodeController posiada konstruktor przyjmujący parametr IWebHostEnvironment. Ten parametr jest wstrzykiwany przez ASP.NET Core do obsługi zadań związanych z hostingiem sieci.
Metody Akcji
Index(): Ta metoda zwraca widok (prawdopodobnie stronę HTML) po uzyskaniu dostępu. Wydaje się, że nie jest bezpośrednio związany z generowaniem kodów QR.CreateQRCode(QRCodeModel generateQRCode): Ta metoda jest sercem logiki generowania kodów QR. Przyjmuje obiektQRCodeModel(prawdopodobnie zawierający tekst kodu QR) jako parametr.
Wewnątrz metody
- Konstrukuje ścieżkę do zapisywania wygenerowanego obrazu kodu QR.
- Tworzy obiekt kodu QR za pomocą
QrWriter.Write(generateQRCode.QRCodeText). - Zapisuje kod QR jako obraz bitmapy.
- Konstrukuje URL obrazu na podstawie szczegółów zapytania sieciowego.
- Ustawia właściwość
ViewBag.QrCodeUriz adresem URL obrazu. - Jeśli wystąpią jakieś wyjątki podczas tego procesu, zostają rzucone.
Generowanie kodów QR
Faktyczne generowanie kodu QR odbywa się w metodzie CreateQRCode. Wywołanie QrWriter.Write(generateQRCode.QRCodeText) tworzy obiekt kodu QR na podstawie dostarczonego tekstu.
Zapisywanie Obrazu
Wygenerowany kod QR jest zapisywany jako obraz bitmapowy za pomocą qrImage.SaveAs(filePath). Ścieżka pliku obrazu jest konstrukowana na podstawie podstawowej ścieżki web i pożądanego nazwy pliku.
URL Obrazu
imageUrl jest konstruowany przy użyciu schematu, hosta i bazowej ścieżki żądania webowego. Ten URL wskazuje na lokalizację, gdzie można uzyskać dostęp do wygenerowanego obrazu kodu QR. Ogólnie rzecz biorąc, ten kontroler obsługuje generowanie kodu QR, zapisywanie obrazu i udostępnianie URL obrazu do dalszego wykorzystania.
Dodanie Widoku Do Kontrolera
Aby dodać nowy widok, kliknij prawym przyciskiem metodę akcji CreateQRCode w klasie QrCodeController.

Wybierz "Dodaj Widok", a następnie wybierz "Widok Razor". Kliknij przycisk "Dodaj".

Następnie wybierz szablon "Utwórz" i wcześniej wygenerowaną klasę Model.

Teraz zamień poniższy kod we widoku
@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
Zrób to samo dla metody akcji indeksu, aby po uruchomieniu aplikacji nie wystąpił błąd przy żądaniu POST.
Teraz w Program.cs zmień poniższy kod, aby powyższy widok był domyślną trasą.
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}")
Ta akcja zmieni domyślną trasę z HomeController na naszą QrCodeController.
Teraz skompiluj i uruchom projekt.

Wpisz dowolny tekst w polu tekstowym i kliknij 'Utwórz'. To stworzy nowy kod QR, jak pokazano poniżej.

Dodawanie Stylu do kodu QR
QrStyleOptions są używane do stylizacji generowania kodów 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
Wynik

Licencja (dostępna wersja próbna)
Dla deweloperów, którzy chcą przetestować IronQR, dostępna jest licencja próbna tutaj. Ten klucz licencyjny należy umieścić w pliku appSettings.json. Dzięki temu zostanie usunięty znak wodny widoczny na powyższych obrazach.
{
"IronQr.License.LicenseKey": "My key"
}
Wnioski
W tym artykule zgłębiliśmy, jak generować kody QR w ASP.NET Core za pomocą IronQR. Wykorzystując moc IronQR, programiści mogą z łatwością integrować funkcjonalność generowania kodów QR w swoich aplikacjach webowych. Niezależnie od tego, czy chodzi o systemy biletowe, uwierzytelnianie, czy udostępnianie informacji, kody QR oferują wszechstronne rozwiązanie do skutecznego przesyłania danych. Dzięki IronQR, tworzenie i dostosowywanie kodów QR w ASP.NET Core nigdy nie było łatwiejsze. Zacznij włączać generowanie kodów QR do swoich projektów ASP.NET Core i odkryj świat możliwości dynamicznego kodowania danych i udostępniania.
Często Zadawane Pytania
Jak mogę generować kody QR w ASP.NET Core?
Aby generować kody QR w ASP.NET Core, możesz użyć biblioteki IronQR. Rozpocznij tworząc nowy projekt ASP.NET w Visual Studio, zainstaluj IronQR przez Menedżera pakietów, i zaimplementuj kod do generowania kodów QR korzystając z przyjaznego API.
Jakie opcje dostosowywania są dostępne dla kodów QR w ASP.NET Core?
IronQR oferuje kilka opcji dostosowywania kodów QR w ASP.NET Core, w tym zmianę rozmiaru, dostosowanie marginesów, zmianę kolorów i dodawanie logo. Można to zarządzać używając klasy QrStyleOptions.
Jak działa korekcja błędów w generowaniu kodów QR z ASP.NET Core?
IronQR pozwala zarządzać poziomami korekcji błędów podczas generowania kodów QR w ASP.NET Core. Dzięki temu kody QR posiadają pożądany poziom odporności na błędy, co jest kluczowe dla niezawodnego skanowania.
Czy mogę odczytać kody QR z różnych formatów obrazów w ASP.NET Core?
Tak, z IronQR w ASP.NET Core możesz odczytywać kody QR z różnych formatów obrazów, takich jak jpg, png, svg, bmp, gif, tif i tiff, jak również z System.Drawing Bitmaps i IronDrawing Images (AnyBitmap).
Czy można przetestować IronQR bez pełnej licencji?
Tak, możesz uzyskać licencję próbną IronQR z strony internetowej Iron Software. Licencja próbna pozwala przetestować bibliotekę i usunąć znaki wodne z generowanych kodów QR podczas fazy testów poprzez umieszczenie licencji w pliku appSettings.json.
Jakie są korzyści z używania kodów QR w aplikacjach webowych?
Kody QR są korzystne dla aplikacji webowych, ponieważ pozwalają na efektywne przechowywanie i transmisję danych. Są szczególnie przydatne w aplikacjach takich jak systemy biletowe, uwierzytelnianie i zarządzanie inwentaryzacją, zapewniając dynamiczny sposób kodowania i udostępniania informacji.
Jak uczenie maszynowe poprawia wykrywanie kodów QR w ASP.NET Core?
IronQR korzysta z zaawansowanego modelu uczenia maszynowego do wykrywania kodów QR, zapewniając wysoką dokładność i niezawodność w rozpoznawaniu kodów. Dla użytkowników preferujących bardziej lekkie rozwiązanie, dostępny jest również tryb Slim Mode nie korzytający z ML.




