Przejdź do treści stopki
KORZYSTANIE Z IRONQR

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

  1. Utwórz projekt ASP.Net przy użyciu Visual Studio
  2. Zainstaluj bibliotekę IronQR z Menedżera Pakietów
  3. Wygeneruj kod QR
  4. 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:

  1. C#, VB.NET, F#
  2. .NET Core (8, 7, 6, 5, and 3.1+)
  3. .NET Standard (2.0+)
  4. .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:

  1. Obrazy (jpg, png, svg, bmp)
  2. Obrazy wielostronicowe (gif, tif, tiff)
  3. System.Drawing Bitmaps
  4. IronDrawing Images (AnyBitmap)

6. Pisanie Kodów QR

IronQR pozwala zapisywać kody QR dla różnych typów dokumentów, takich jak:

  1. Images (jpg, png, gif, tiff, bmp)
  2. System.Drawing Images
  3. Strumienie (MemoryStream, byte[])
  4. 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

Jak generować kody QR w ASP .NET Core: Rysunek 1 - Wybierz szablon aplikacji webowej ASP.NET CORE

Podaj nazwę projektu i lokalizację

Jak generować kody QR w ASP .NET Core: Rysunek 2 - Nazwij projekt i lokalizację, w której chcesz go zapisać

Wybierz wymaganą wersję .NET.

Jak generować kody QR w ASP .NET Core: Rysunek 3 - Wybierz odpowiednią wersję .NET

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

Jak generować kody QR w ASP .NET Core: Rysunek 4 - Kliknij przycisk

Krok 2: Zainstaluj bibliotekę IronQR z Menedżera Pakietów

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

Jak generować kody QR w ASP .NET Core: Rysunek 5 - Wyszukaj IronOCR za pomocą menedżera pakietów Visual Studio i zainstaluj go

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

Jak generować kody QR w ASP .NET Core: Rysunek 6 - Wyszukaj IronOCR 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
$vbLabelText   $csharpLabel

Stwórz kontroler do kodu QR

Aby dodać nowy kontroler, kliknij prawym przyciskiem myszy na folder kontrolera i podaj nazwę, jak pokazano poniżej.

Jak generować kody QR w ASP .NET Core: Rysunek 7 - Dodaj nowy kontroler, klikając na folder i nadając mu nazwę

Wybierz Pusty Kontroler.

Jak generować kody QR w ASP .NET Core: Rysunek 8 - Kliknij na Pusty Kontroler w oknie

Podaj nazwę.

Jak generować kody QR w ASP .NET Core: Rysunek 9 - Nazwij kontroler

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
$vbLabelText   $csharpLabel

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 obiekt QRCodeModel (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.QrCodeUri z 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.

Jak generować kody QR w ASP .NET Core: Rysunek 10 - Dodaj nowy widok w klasie `QrCodeController`

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

Jak generować kody QR w ASP .NET Core: Rysunek 11 - Wybierz opcję Dodaj Widok, następnie Razor View, a potem Dodaj

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

Jak generować kody QR w ASP .NET Core: Rysunek 12 - Wybierz szablon `Create` wygenerowany wcześniej

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
$vbLabelText   $csharpLabel

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

Ta akcja zmieni domyślną trasę z HomeController na naszą QrCodeController.

Teraz skompiluj i uruchom projekt.

Jak generować kody QR w ASP .NET Core: Rysunek 13 - Przykładowa strona główna z projektu

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

Jak generować kody QR w ASP .NET Core: Rysunek 14 - Wprowadź dowolny tekst i kliknij utwórz, aby stworzyć nowy kod QR za pomocą IronQR

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
$vbLabelText   $csharpLabel

Wynik

Jak generować kody QR w ASP .NET Core: Rysunek 15 - Zmiana koloru kodu QR programowo

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie