Jak generować kody QR w C# z IronBarcode
IronBarcode umożliwia programistom .NET efektywne tworzenie kodów QR przy użyciu klasy QRCodeWriter. Obsługuje niestandardowe logo, kolory, wiele formatów wyjściowych oraz wdrażanie na różnych platformach, w tym Windows, Linux, macOS i urządzenia mobilne.
W niniejszym przewodniku pokazano, jak używać IronBarcode do generowania kodów QR dla systemów produkcyjnych. API IronBarcode jest zgodne z konwencjami .NET, zapewniając jednocześnie wydajność i niezawodność wymagańą w aplikacjach korporacyjnych. Biblioteka oferuje kompletną dokumentację i obsługuje wdrażanie na platformach Windows, Linux, macOS oraz platformach mobilnych. Aby uzyskać pełny przegląd wszystkich możliwości, zapoznaj się ze stroną poświęconą funkcjom. Przewodnik szybkiego startu dotyczący kodów kreskowych zawiera praktyczne przykłady, które pomogą Ci rozpocząć pracę.
Jakie są zalety korzystania z IronBarcode do generowania kodów QR?
Dłączego warto wybrać bibliotekę IronBarcode zamiast innych bibliotek?
- Odczytuje i zapisuje ponad 20 formatów BARCODE, w tym UPC, EAN, Code 128 i
DataMatrix. Zobacz wszystkie obsługiwane formaty. - Przetwarza obrazy za pomocą filtrów korekcyjnych w celu zwiększenia dokładności. Zawiera zaawansowaną korekcję obrazu dla niedoskonałych kodów kreskowych.
- Odczytuje skany i klatki wideo z automatyczną korekcją orientacji obrazu.
- Wykorzystuje wiele rdzeni do przetwarzania wsadowego z obsługą asynchroniczną. Dowiedz się, jak odczytywać kody kreskowe asynchronicznie, aby uzyskać lepszą wydajność.
- Automatycznie wyszukuje wiele barcode'ów dzięki konfigurowalnym opcjom czytnika. Skonfiguruj ustawienia czytnika BarCode, aby uzyskać optymalne wyniki.
- Obsługuje architektury 32/64-bitowe w .NET Core i .NET Framework z kompatybilnością międzyplatformową.
- Działa na komputerach PC i urządzeniach mobilnych: Android, iOS, macOS, Linux. Zobacz przewodnik konfiguracji Docker dla serwerów.
- Generuje kody QR w wielu formatach z różnymi opcjami wyjściowymi. Obsługuje generowanie barcode'ów w wielu formatach.
Jak wygenerować kody QR za pomocą IronBarcode?
Poniższe sekcje przedstawiają gotowy do użycia kod zgodny z zasadami SOLID. Nauczysz się tworzyć różne typy kodów QR, wdrażać niestandardowe style oraz zapewniać niezawodną wydajność skanowania. Funkcje biblioteki obejmują obsługę kodów kreskowych 1D i 2D, a nie tylko kodów QR. W przypadku zaawansowanych scenariuszy należy zapoznać się z Dokumentacją API, aby uzyskać pełne sygnatury metod. Zapoznaj się z wersjami demonstracyjnymi, aby zobaczyć możliwości IronBarcode w praktyce.
Jak skonfigurować nowy projekt?
Otwórz program Visual Studio i wybierz opcję Nowy projekt z menu Plik. W przypadku wdrożeń Enterprise warto zapoznać się z instrukcją instalatora MSI dotyczącą instalacji automatycznych. Przegląd "Pierwsze kroki" zawiera kompletne instrukcje konfiguracji.
Wybierz szablon aplikacji konsolowej i kliknij Dalej.
Wpisz preferowaną nazwę projektu (np. Generator kodów QR) i określ lokalizację. Kliknij Dalej.
Wybierz platformę .NET Framework z listy rozwijanej (.NET 6.0 (długoterminowe wsparcie)) i kliknij Utwórz. IronBarcode obsługuje wszystkie nowoczesne wersje .NET, zgodnie z informacjami zawartymi w dokumentacji dotyczącej kompatybilności. Aby zapoznać się ze szczegółowymi wymaganiami platformy, sprawdź przewodnik dotyczący integracji z Blazorem.
Jakie metody instalacji są dostępne?
Zainstaluj IronBarcode, korzystając z jednej z czterech metod dostosowanych do różnych procesów pracy. Demonstracje biblioteki na żywo pokazują możliwości rozpoznawania kodów kreskowych w czasie rzeczywistym. Aby szybko przetestować bibliotekę, zapoznaj się z przykładem szybkiego startu dotyczącym kodów kreskowych BarCode.
Jak zainstalować za pomocą interfejsu użytkownika menedżera pakietów Visual Studio?
Przejdź do Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania...
Lub kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań i wybierz opcję Zarządzaj pakietami NuGet...
Kliknij Przeglądaj, wyszukaj BarCode, wybierz IronBarcode, wybierz swój projekt i kliknij Zainstaluj. W przypadku instalacji specyficznych dla platformy zapoznaj się z przewodnikiem po pakietach NuGet. W razie problemów zapoznaj się z przewodnikiem rozwiązywania problemów NuGet. Biblioteka obsługuje różne scenariusze wdrażania, w tym AWS Lambda i Azure Functions.
Jak zainstalować za pomocą konsoli menedżera pakietów?
Otwórz Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów i uruchom:
Install-Package BarCode
Spowoduje to zainstalowanie biblioteki w bieżącym projekcie. W przypadku wdrożeń kontenerowych postępuj zgodnie z instrukcją konfiguracji Docker. W przypadku korzystania z kluczy licencyjnych należy zapewnić prawidłową konfigurację środowiska wdrożeniowego.
Jak pobrać pliki ze strony NuGet lub IronBarcode?
Pobierz z witryny NuGet Gallery lub odwiedź stronę główną IronBarcode, aby uzyskać najnowszą bibliotekę DLL do obsługi kodów kreskowych w środowisku .NET. Dodaj bibliotekę DLL do projektu, wybierając opcję Dodaj > Odwołanie w Eksploratorze rozwiązań. Aby rozwiązać problemy z plikami DLL, zapoznaj się z przewodnikiem dotyczącym brakujących plików DLL. W przypadku problemów z środowiskiem uruchomieniowym należy zapoznać się z przewodnikiem dotyczącym wyjątków kopii środowiska uruchomieniowego.
Jak tworzyć i dostosowywać obrazy kodów QR?
Jak wygenerować podstawowy kod QR?
Twórz kody QR przy użyciu metody CreateQrCode z klasy QRCodeWriter. Pełny przykład można znaleźć w samouczku dotyczącym generatora kodów QR w języku C#. Biblioteka obsługuje tworzenie obrazów BARCODE w różnych formatach:
using IronBarCode;
// Basic QR code generation with medium error correction
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0);
qrCode.SaveAsPng("MyQR.png");
// Generate QR code with automatic sizing and highest error correction
var autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example");
autoQr.SaveAsJpeg("AutoQR.jpg");
// Production-ready QR code with validation
public GeneratedBarcode CreateValidatedQrCode(string data, int size = 600)
{
if (string.IsNullOrWhiteSpace(data))
throw new ArgumentException("Data cannot be empty");
if (data.Length > 2953) // QR Code capacity at highest error correction
throw new ArgumentException("Data exceeds QR code capacity");
var qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High);
qr.VerifyQrCode(); // Verify the generated code is valid
return qr;
}
using IronBarCode;
// Basic QR code generation with medium error correction
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0);
qrCode.SaveAsPng("MyQR.png");
// Generate QR code with automatic sizing and highest error correction
var autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example");
autoQr.SaveAsJpeg("AutoQR.jpg");
// Production-ready QR code with validation
public GeneratedBarcode CreateValidatedQrCode(string data, int size = 600)
{
if (string.IsNullOrWhiteSpace(data))
throw new ArgumentException("Data cannot be empty");
if (data.Length > 2953) // QR Code capacity at highest error correction
throw new ArgumentException("Data exceeds QR code capacity");
var qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High);
qr.VerifyQrCode(); // Verify the generated code is valid
return qr;
}
Imports IronBarCode
' Basic QR code generation with medium error correction
Dim qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0)
qrCode.SaveAsPng("MyQR.png")
' Generate QR code with automatic sizing and highest error correction
Dim autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example")
autoQr.SaveAsJpeg("AutoQR.jpg")
' Production-ready QR code with validation
Public Function CreateValidatedQrCode(data As String, Optional size As Integer = 600) As GeneratedBarcode
If String.IsNullOrWhiteSpace(data) Then
Throw New ArgumentException("Data cannot be empty")
End If
If data.Length > 2953 Then ' QR Code capacity at highest error correction
Throw New ArgumentException("Data exceeds QR code capacity")
End If
Dim qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High)
qr.VerifyQrCode() ' Verify the generated code is valid
Return qr
End Function
Metoda CreateQrCode akceptuje:
- Wymagane: dane do zakodowania (ciąg znaków lub strumień)
- Opcjonalnie: wymiary grafiki (domyślnie 500x500px)
- Opcjonalnie: poziom korekty błędów (Niski 7%, Średni 15%, Wysoki 25%, Najwyższy 30%)
- Opcjonalnie: numer wersji QR (0 dla automatycznego)
W celu zapewnienia wysokiej wydajności przetwarzania wsadowego należy stosować operacje asynchroniczne i niestandardowe style. W przypadku pracy w nieidealnych warunkach należy korzystać z funkcji odporności na awarie. Samouczek dotyczący odczytu kodów BARCODE pokazuje, jak zweryfikować wygenerowane kody.
Jakie typy danych można zakodować w kodach QR?
Typowe typy danych kodów QR dla aplikacji produkcyjnych obejmują tworzenie BARCODE'ów z różnych źródeł. Szczegółowe przykłady można znaleźć w przykładzie tworzenia kodu QR. IronBarcode obsługuje kody kreskowe Unicode dla międzynarodowego kodowania znaków:
Kody QR adresów URL:
// Generate QR code for website URL
var urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800);
urlQr.SetMargins(10); // Add quiet zone
urlQr.SaveAsPng("campaign-qr.png");
// Advanced URL QR code with tracking
public GeneratedBarcode CreateTrackableUrlQr(string baseUrl, Dictionary<string, string> utmParams)
{
var uriBuilder = new UriBuilder(baseUrl);
var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
foreach (var param in utmParams)
query[param.Key] = param.Value;
uriBuilder.Query = query.ToString();
var qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000);
return qr;
}
// Generate QR code for website URL
var urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800);
urlQr.SetMargins(10); // Add quiet zone
urlQr.SaveAsPng("campaign-qr.png");
// Advanced URL QR code with tracking
public GeneratedBarcode CreateTrackableUrlQr(string baseUrl, Dictionary<string, string> utmParams)
{
var uriBuilder = new UriBuilder(baseUrl);
var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
foreach (var param in utmParams)
query[param.Key] = param.Value;
uriBuilder.Query = query.ToString();
var qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000);
return qr;
}
Imports System
Imports System.Collections.Generic
Imports System.Web
' Generate QR code for website URL
Dim urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800)
urlQr.SetMargins(10) ' Add quiet zone
urlQr.SaveAsPng("campaign-qr.png")
' Advanced URL QR code with tracking
Public Function CreateTrackableUrlQr(baseUrl As String, utmParams As Dictionary(Of String, String)) As GeneratedBarcode
Dim uriBuilder = New UriBuilder(baseUrl)
Dim query = HttpUtility.ParseQueryString(uriBuilder.Query)
For Each param In utmParams
query(param.Key) = param.Value
Next
uriBuilder.Query = query.ToString()
Dim qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000)
Return qr
End Function
Dane kontaktowe vCard:
string vCard = @"BEGIN:VCARD
VERSION:3.0
FN:John Smith
ORG:Tech Corp
TEL:+1-555-0123
EMAIL:john@example.com
END:VCARD";
var contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium);
contactQr.SaveAsPng("contact-card.png");
string vCard = @"BEGIN:VCARD
VERSION:3.0
FN:John Smith
ORG:Tech Corp
TEL:+1-555-0123
EMAIL:john@example.com
END:VCARD";
var contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium);
contactQr.SaveAsPng("contact-card.png");
Dim vCard As String = "BEGIN:VCARD" & vbCrLf & _
"VERSION:3.0" & vbCrLf & _
"FN:John Smith" & vbCrLf & _
"ORG:Tech Corp" & vbCrLf & _
"TEL:+1-555-0123" & vbCrLf & _
"EMAIL:john@example.com" & vbCrLf & _
"END:VCARD"
Dim contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium)
contactQr.SaveAsPng("contact-card.png")
WiFi Konfiguracja:
string wifiConfig = "WIFI:T:WPA;S:NetworkName;P:Password123;;";
var wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500);
wifiQr.SaveAsPng("wifi-config.png");
string wifiConfig = "WIFI:T:WPA;S:NetworkName;P:Password123;;";
var wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500);
wifiQr.SaveAsPng("wifi-config.png");
Dim wifiConfig As String = "WIFI:T:WPA;S:NetworkName;P:Password123;;"
Dim wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500)
wifiQr.SaveAsPng("wifi-config.png")
IronBarcode obsługuje Unicode dla znaków międzynarodowych oraz formaty takie jak Micro QR i rMQR dla aplikacji o ograniczonej przestrzeni. W przypadku formatów specjalistycznych zapoznaj się z kamieńiem milowym dotyczącym nowych formatów. W przypadku pracy ze specjalistycznymi formatami danych biblioteka może odczytywać dane ze strumieni i eksportować je jako strumienie, co pozwala na efektywne wykorzystanie pamięci.
Jak dodać logo i niestandardowe style?
Użyj CreateQrCodeWithLogo, aby dodać logo firmy do kodów QR. Pełne opcje stylizacji można znaleźć w przykładzie niestandardowego kodu QR oraz w przewodniku po stylizacji kodów QR. Biblioteka obsługuje również ogólne formatowanie BarCodes dla wszystkich typów BarCodes:
// Create QR code with embedded logo
var qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500);
qrWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkRed);
qrWithLogo.SaveAsPng("Logo_QR_Code.png");
// Advanced logo customization
var logo = new QRCodeLogo("company-logo.png")
{
Width = 100,
Height = 100,
CornerRadius = 5
};
var advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600);
// Production-ready branded QR code
public GeneratedBarcode CreateBrandedQrCode(string data, string logoPath, string brandColor)
{
var logo = new QRCodeLogo(logoPath)
{
Width = 80,
Height = 80,
CornerRadius = 10
};
var qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800);
qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(brandColor));
qr.SetMargins(15);
return qr;
}
// Create QR code with embedded logo
var qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500);
qrWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkRed);
qrWithLogo.SaveAsPng("Logo_QR_Code.png");
// Advanced logo customization
var logo = new QRCodeLogo("company-logo.png")
{
Width = 100,
Height = 100,
CornerRadius = 5
};
var advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600);
// Production-ready branded QR code
public GeneratedBarcode CreateBrandedQrCode(string data, string logoPath, string brandColor)
{
var logo = new QRCodeLogo(logoPath)
{
Width = 80,
Height = 80,
CornerRadius = 10
};
var qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800);
qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(brandColor));
qr.SetMargins(15);
return qr;
}
Imports System.Drawing
' Create QR code with embedded logo
Dim qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500)
qrWithLogo.ChangeBarCodeColor(Color.DarkRed)
qrWithLogo.SaveAsPng("Logo_QR_Code.png")
' Advanced logo customization
Dim logo As New QRCodeLogo("company-logo.png") With {
.Width = 100,
.Height = 100,
.CornerRadius = 5
}
Dim advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600)
' Production-ready branded QR code
Public Function CreateBrandedQrCode(data As String, logoPath As String, brandColor As String) As GeneratedBarcode
Dim logo As New QRCodeLogo(logoPath) With {
.Width = 80,
.Height = 80,
.CornerRadius = 10
}
Dim qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800)
qr.ChangeBarCodeColor(ColorTranslator.FromHtml(brandColor))
qr.SetMargins(15)
Return qr
End Function
Zastosuj dodatkowe formatowanie za pomocą funkcji dostosowywania BarCode. Funkcja stylizacji BarCode zapewnia pełne możliwości dostosowania:
// Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"));
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray);
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME");
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name");
// Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"));
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray);
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME");
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name");
' Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"))
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray)
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME")
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name")
Jakie formaty eksportu są dostępne?
Zapisuj kody QR w różnych formatach do różnych zastosowań. Więcej informacji znajdziesz w przykładzie dotyczącym zapisywania kodów kreskowych oraz w samouczku dotyczącym generatora obrazów BARCODE. W przypadku specjalistycznych wymagań zapoznaj się z przewodnikiem dotyczącym tworzenia obrazów BARCODE 1-BPP:
// Image formats
qrWithLogo.SaveAsJpeg("qr.jpg");
qrWithLogo.SaveAsPng("qr.png");
qrWithLogo.SaveAsGif("qr.gif");
qrWithLogo.SaveAsTiff("qr.tiff");
// Web formats
qrWithLogo.SaveAsHtmlFile("qr.html");
string dataUrl = qrWithLogo.ToDataUrl();
// Print formats
qrWithLogo.SaveAsPdf("qr.pdf");
qrWithLogo.ChangeBarcodeDpi(300);
// API formats
byte[] qrBytes = qrWithLogo.ToPngBinaryData();
var stream = qrWithLogo.ToStream();
// High-quality print export
public void ExportForPrint(GeneratedBarcode qr, string filename)
{
qr.ChangeBarcodeDpi(600); // High DPI for print
qr.ResizeTo(2000, 2000); // Large size
qr.SaveAsTiff(filename); // Lossless format
}
// Image formats
qrWithLogo.SaveAsJpeg("qr.jpg");
qrWithLogo.SaveAsPng("qr.png");
qrWithLogo.SaveAsGif("qr.gif");
qrWithLogo.SaveAsTiff("qr.tiff");
// Web formats
qrWithLogo.SaveAsHtmlFile("qr.html");
string dataUrl = qrWithLogo.ToDataUrl();
// Print formats
qrWithLogo.SaveAsPdf("qr.pdf");
qrWithLogo.ChangeBarcodeDpi(300);
// API formats
byte[] qrBytes = qrWithLogo.ToPngBinaryData();
var stream = qrWithLogo.ToStream();
// High-quality print export
public void ExportForPrint(GeneratedBarcode qr, string filename)
{
qr.ChangeBarcodeDpi(600); // High DPI for print
qr.ResizeTo(2000, 2000); // Large size
qr.SaveAsTiff(filename); // Lossless format
}
' Image formats
qrWithLogo.SaveAsJpeg("qr.jpg")
qrWithLogo.SaveAsPng("qr.png")
qrWithLogo.SaveAsGif("qr.gif")
qrWithLogo.SaveAsTiff("qr.tiff")
' Web formats
qrWithLogo.SaveAsHtmlFile("qr.html")
Dim dataUrl As String = qrWithLogo.ToDataUrl()
' Print formats
qrWithLogo.SaveAsPdf("qr.pdf")
qrWithLogo.ChangeBarcodeDpi(300)
' API formats
Dim qrBytes As Byte() = qrWithLogo.ToPngBinaryData()
Dim stream = qrWithLogo.ToStream()
' High-quality print export
Public Sub ExportForPrint(qr As GeneratedBarcode, filename As String)
qr.ChangeBarcodeDpi(600) ' High DPI for print
qr.ResizeTo(2000, 2000) ' Large size
qr.SaveAsTiff(filename) ' Lossless format
End Sub
W przypadku operacji związanych z plikami PDF zapoznaj się z przewodnikami dotyczącymi tworzenia BARCODE-ów w formacie PDF oraz umieszczania BARCODE-ów na istniejących plikach PDF. Podczas odczytywania kodów kreskowych z plików PDF należy skorzystać z ustawień czytnika BarCode PDF, aby uzyskać optymalne wyniki.
Jak wdrożyć kody QR w aplikacjach internetowych?
W przypadku aplikacji ASP.NET MVC należy zaimplementować strumieniowanie bez operacji wejścia/wyjścia plików. Biblioteka obsługuje tworzenie BarCodes w formacie HTML w celu bezpośredniej integracji z internetem:
public IActionResult GetQrCode(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 400);
byte[] qrBytes = qr.ToPngBinaryData();
return File(qrBytes, "image/png", "qrcode.png");
}
// Stream directly without disk I/O
public IActionResult StreamQrCode(string content)
{
var qr = QRCodeWriter.CreateQrCode(content, 500);
var stream = qr.ToStream();
return File(stream, "image/png");
}
// Generate HTML-embedded QR codes
public IActionResult GetHtmlQrCode(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 400);
var htmlString = qr.ToHtmlTag();
return Content(htmlString, "text/html");
}
public IActionResult GetQrCode(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 400);
byte[] qrBytes = qr.ToPngBinaryData();
return File(qrBytes, "image/png", "qrcode.png");
}
// Stream directly without disk I/O
public IActionResult StreamQrCode(string content)
{
var qr = QRCodeWriter.CreateQrCode(content, 500);
var stream = qr.ToStream();
return File(stream, "image/png");
}
// Generate HTML-embedded QR codes
public IActionResult GetHtmlQrCode(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 400);
var htmlString = qr.ToHtmlTag();
return Content(htmlString, "text/html");
}
Public Function GetQrCode(data As String) As IActionResult
Dim qr = QRCodeWriter.CreateQrCode(data, 400)
Dim qrBytes As Byte() = qr.ToPngBinaryData()
Return File(qrBytes, "image/png", "qrcode.png")
End Function
' Stream directly without disk I/O
Public Function StreamQrCode(content As String) As IActionResult
Dim qr = QRCodeWriter.CreateQrCode(content, 500)
Dim stream = qr.ToStream()
Return File(stream, "image/png")
End Function
' Generate HTML-embedded QR codes
Public Function GetHtmlQrCode(data As String) As IActionResult
Dim qr = QRCodeWriter.CreateQrCode(data, 400)
Dim htmlString As String = qr.ToHtmlTag()
Return Content(htmlString, "text/html")
End Function
W przypadku aplikacji Blazor należy zaimplementować reaktywne generowanie kodów QR:
@page "/qrcode"
@using IronBarCode
<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>
@if (!string.IsNullOrEmpty(QrCodeDataUrl))
{
<img src="@QrCodeDataUrl" alt="QR Code" />
}
@code {
private string qrText = "";
private string QrCodeDataUrl = "";
private void GenerateQr()
{
if (!string.IsNullOrEmpty(qrText))
{
var qr = QRCodeWriter.CreateQrCode(qrText, 400);
QrCodeDataUrl = qr.ToDataUrl();
}
}
}
@page "/qrcode"
@using IronBarCode
<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>
@if (!string.IsNullOrEmpty(QrCodeDataUrl))
{
<img src="@QrCodeDataUrl" alt="QR Code" />
}
@code {
private string qrText = "";
private string QrCodeDataUrl = "";
private void GenerateQr()
{
if (!string.IsNullOrEmpty(qrText))
{
var qr = QRCodeWriter.CreateQrCode(qrText, 400);
QrCodeDataUrl = qr.ToDataUrl();
}
}
}
@page "/qrcode"
@Imports IronBarCode
<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>
@if Not String.IsNullOrEmpty(QrCodeDataUrl) Then
<img src="@QrCodeDataUrl" alt="QR Code" />
End If
@Code
Private qrText As String = ""
Private QrCodeDataUrl As String = ""
Private Sub GenerateQr()
If Not String.IsNullOrEmpty(qrText) Then
Dim qr = QRCodeWriter.CreateQrCode(qrText, 400)
QrCodeDataUrl = qr.ToDataUrl()
End If
End Sub
End Code
Aby wyeksportować kody kreskowe jako HTML, zapoznaj się z przewodnikiem tworzenia kodów kreskowych jako HTML. W przypadku stosowania licencji w aplikacjach internetowych zapoznaj się z przewodnikiem dotyczącym kluczy licencyjnych w pliku web.config.
Jakie są najlepsze praktyki dotyczące wdrażania kodów QR?
Który poziom korekty błędów powinienem wybrać?
Korekta błędów wpływa na odporność i wydajność. Szczegółowe informacje można znaleźć w przewodniku dotyczącym poprawiania błędów. Biblioteka zawiera progi pewności oparte na uczeniu maszynowym, które zwiększają dokładność:
| Poziom | Odzyskiwanie | Przykład zastosowania |
|---|---|---|
| Low | 7% | Czyste środowiska cyfrowe |
| Medium | 15% | Materiały drukowane, wizytówki |
| High | 25% | Oznakowanie zewnętrzne, przedmioty ręczne |
| Najwyższa | 30% | Zastosowanie przemysłowe, dodane logo |
Jaki powinien być rozmiar moich kodów QR?
Oblicz optymalny rozmiar na podstawie odległości skanowania. Dowiedz się, jak ustawić marginesy, aby poprawić skanowanie. Przykład ustawienia marginesów ilustruje najlepsze praktyki:
// 1:10 ratio - 1cm QR per 10cm distance
int CalculateQrSize(double scanDistanceMeters)
{
int sizeInCm = (int)(scanDistanceMeters * 10);
return (int)(sizeInCm * 37.8); // Convert to pixels at 96 DPI
}
// Set appropriate margins for reliable scanning
public GeneratedBarcode CreateScanOptimizedQr(string data, int scanDistance)
{
int size = CalculateQrSize(scanDistance);
var qr = QRCodeWriter.CreateQrCode(data, size);
qr.SetMargins(size / 20); // 5% margin
return qr;
}
// 1:10 ratio - 1cm QR per 10cm distance
int CalculateQrSize(double scanDistanceMeters)
{
int sizeInCm = (int)(scanDistanceMeters * 10);
return (int)(sizeInCm * 37.8); // Convert to pixels at 96 DPI
}
// Set appropriate margins for reliable scanning
public GeneratedBarcode CreateScanOptimizedQr(string data, int scanDistance)
{
int size = CalculateQrSize(scanDistance);
var qr = QRCodeWriter.CreateQrCode(data, size);
qr.SetMargins(size / 20); // 5% margin
return qr;
}
' 1:10 ratio - 1cm QR per 10cm distance
Private Function CalculateQrSize(scanDistanceMeters As Double) As Integer
Dim sizeInCm As Integer = CInt(scanDistanceMeters * 10)
Return CInt(sizeInCm * 37.8) ' Convert to pixels at 96 DPI
End Function
' Set appropriate margins for reliable scanning
Public Function CreateScanOptimizedQr(data As String, scanDistance As Integer) As GeneratedBarcode
Dim size As Integer = CalculateQrSize(scanDistance)
Dim qr = QRCodeWriter.CreateQrCode(data, size)
qr.SetMargins(size / 20) ' 5% margin
Return qr
End Function
Jak zapewnić kompatybilność z urządzeniami mobilnymi?
Ulepsz skanowanie na urządzeniach mobilnych, korzystając z ustawień czytnika BarCode. W przypadku problemów z rozpoznawaniem BarCodes należy zapoznać się z przewodnikiem dotyczącym rozwiązywania problemów z nierozpoznawaniem BarCodes:
public GeneratedBarcode CreateMobileOptimizedQr(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium);
qr.SetMargins(20); // Adequate quiet zone
qr.ChangeBarCodeColor(System.Drawing.Color.Black);
qr.ChangeBackgroundColor(System.Drawing.Color.White);
return qr;
}
public GeneratedBarcode CreateMobileOptimizedQr(string data)
{
var qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium);
qr.SetMargins(20); // Adequate quiet zone
qr.ChangeBarCodeColor(System.Drawing.Color.Black);
qr.ChangeBackgroundColor(System.Drawing.Color.White);
return qr;
}
Public Function CreateMobileOptimizedQr(ByVal data As String) As GeneratedBarcode
Dim qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium)
qr.SetMargins(20) ' Adequate quiet zone
qr.ChangeBarCodeColor(System.Drawing.Color.Black)
qr.ChangeBackgroundColor(System.Drawing.Color.White)
Return qr
End Function
W przypadku tworzenia aplikacji mobilnych na różne platformy zapoznaj się z samouczkiem dotyczącym skanera BARCODE .NET MAUI. Biblioteka natywnie obsługuje zarówno platformę iOS, jak i Android.## Typowe scenariusze integracji
Tworzenie kodów QR do kampanii marketingowych
Aby wdrożyć kody QR do celów marketingowych z możliwością śledzenia i niestandardowym brandingiem, zapoznaj się z przewodnikiem dotyczącym prędkości odczytu BARCODE, aby zarządzać prędkością odczytu BARCODE:
public GeneratedBarcode CreateCampaignQr(string campaignId, string userId)
{
string trackingUrl = "___PROTECTED_URL_79___";
var qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000);
qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#1E3A8A"));
qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}");
return qr;
}
// Batch generate campaign materials
public async Task GenerateCampaignBatch(List<string> userIds, string campaignId)
{
var tasks = userIds.Select(async userId =>
{
var qr = CreateCampaignQr(campaignId, userId);
await Task.Run(() => qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"));
});
await Task.WhenAll(tasks);
}
public GeneratedBarcode CreateCampaignQr(string campaignId, string userId)
{
string trackingUrl = "___PROTECTED_URL_79___";
var qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000);
qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#1E3A8A"));
qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}");
return qr;
}
// Batch generate campaign materials
public async Task GenerateCampaignBatch(List<string> userIds, string campaignId)
{
var tasks = userIds.Select(async userId =>
{
var qr = CreateCampaignQr(campaignId, userId);
await Task.Run(() => qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"));
});
await Task.WhenAll(tasks);
}
Imports System.Drawing
Imports System.Threading.Tasks
Public Class BarcodeGenerator
Public Function CreateCampaignQr(campaignId As String, userId As String) As GeneratedBarcode
Dim trackingUrl As String = "___PROTECTED_URL_79___"
Dim qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000)
qr.ChangeBarCodeColor(ColorTranslator.FromHtml("#1E3A8A"))
qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}")
Return qr
End Function
' Batch generate campaign materials
Public Async Function GenerateCampaignBatch(userIds As List(Of String), campaignId As String) As Task
Dim tasks = userIds.Select(Async Function(userId)
Dim qr = CreateCampaignQr(campaignId, userId)
Await Task.Run(Sub() qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"))
End Function)
Await Task.WhenAll(tasks)
End Function
End Class
Generowanie kodów QR na etykietach produktów
Twórz kody QR do zarządzania zapasami. W przypadku obsługi formatów specjalnych zapoznaj się z przewodnikiem rozwiązywania problemów GS1-128. W przypadku pracy z konkretnymi typami BARCODE-ów, takimi jak Code 39 lub MSI, należy zapoznać się z przewodnikami dotyczącymi poszczególnych formatów:
public void GenerateProductLabel(Product product)
{
var productData = new
{
sku = product.SKU,
batch = product.BatchNumber,
expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
};
string json = System.Text.Json.JsonSerializer.Serialize(productData);
var qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High);
qr.AddAnnotationTextAboveBarcode(product.Name);
qr.SaveAsPng($"labels/product-{product.SKU}.png");
}
// Generate 1-BPP labels for thermal printers
public void GenerateThermalLabel(Product product)
{
var qr = CreateProductQr(product);
qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png");
}
public void GenerateProductLabel(Product product)
{
var productData = new
{
sku = product.SKU,
batch = product.BatchNumber,
expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
};
string json = System.Text.Json.JsonSerializer.Serialize(productData);
var qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High);
qr.AddAnnotationTextAboveBarcode(product.Name);
qr.SaveAsPng($"labels/product-{product.SKU}.png");
}
// Generate 1-BPP labels for thermal printers
public void GenerateThermalLabel(Product product)
{
var qr = CreateProductQr(product);
qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png");
}
Public Sub GenerateProductLabel(product As Product)
Dim productData = New With {
.sku = product.SKU,
.batch = product.BatchNumber,
.expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
}
Dim json As String = System.Text.Json.JsonSerializer.Serialize(productData)
Dim qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High)
qr.AddAnnotationTextAboveBarcode(product.Name)
qr.SaveAsPng($"labels/product-{product.SKU}.png")
End Sub
' Generate 1-BPP labels for thermal printers
Public Sub GenerateThermalLabel(product As Product)
Dim qr = CreateProductQr(product)
qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png")
End Sub
W przypadku specjalistycznego drukowania etykiet zapoznaj się z przewodnikiem dotyczącym obrazów BARCODE 1-BPP. W przypadku czytania dokumentów wielostronicowych zapoznaj się z przewodnikiem dotyczącym plików GIF i TIFF zawierających wiele stron.
Poprawa wydajności skanowania BarCode
W przypadku aplikacji skanujących duże ilości danych należy wdrożyć obszary przycinania, aby ograniczyć obszary skanowania i poprawić wydajność. Opcje prędkości czytania zapewniają precyzyjną kontrolę nad kompromisem między dokładnością a szybkością:
// Define crop region for faster scanning
var cropRegion = new Rectangle(100, 100, 300, 300);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Faster,
ExpectBarcodeTypes = BarcodeEncoding.QRCode,
CropArea = cropRegion
};
var results = BarcodeReader.Read("image.png", options);
// Define crop region for faster scanning
var cropRegion = new Rectangle(100, 100, 300, 300);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Faster,
ExpectBarcodeTypes = BarcodeEncoding.QRCode,
CropArea = cropRegion
};
var results = BarcodeReader.Read("image.png", options);
' Define crop region for faster scanning
Dim cropRegion As New Rectangle(100, 100, 300, 300)
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Faster,
.ExpectBarcodeTypes = BarcodeEncoding.QRCode,
.CropArea = cropRegion
}
Dim results = BarcodeReader.Read("image.png", options)
Podczas pracy z obiektami System.Drawing biblioteka zapewnia kompatybilność międzyplatformową poprzez IronDrawing.
Najważniejsze wnioski
IronBarcode oferuje kompletne rozwiązanie do generowania kodów QR w aplikacjach .NET. Biblioteka zapewnia intuicyjne interfejsy API, obszerną dokumentację oraz funkcje gotowe do wdrożenia w środowisku produkcyjnym, w tym odporność na awarie, obsługę wielu platform oraz optymalizację wydajności. Bądź na bieżąco z najnowszymi funkcjami dzięki dziennikowi zmian. W przypadku wdrożeń, w których bezpieczeństwo ma kluczowe znaczenie, należy zapoznać się z informacjami dotyczącymi luk w zabezpieczeniach (CVE).
Informacje dotyczące licencji można znaleźć na stronie poświęconej licencjom. IronBarcode oferuje bezpłatną licencję dla programistów z opcjami premium, w tym wsparciem technicznym i aktualizacjami. Obecni klienci mogą zapoznać się z opcjami przedłużenia licencji i aktualizacji. Jeśli potrzebujesz pomocy w zakresie licencjonowania, zapoznaj się z przewodnikiem dotyczącym wniosków o klucze licencyjne oraz konfiguracją licencjonowania w pliku web.config.
W przypadku wdrożeń produkcyjnych warto zapoznać się z przewodnikami dotyczącymi AWS Lambda, Azure Functions i kontenerów Docker. Aby rozwiązać konkretne problemy związane z wdrażaniem, zapoznaj się z przewodnikiem dotyczącym środowiska uruchomieniowego AWS Lambda oraz rozwiązaniami dotyczącymi wyjątków kopiowania w środowisku uruchomieniowym. W przypadku wystąpienia fałszywych alarmów należy zapoznać się ze szczegółowym przewodnikiem dotyczącym rozwiązywania problemów.
Aby uzyskać pomoc techniczną, prześlij zgłoszenie do działu inżynierii. Biblioteka jest regularnie aktualizowana, jak pokazano w sekcji aktualizacji produktu, co zapewnia ciągłą kompatybilność i nowe funkcje.
Pierwsze kroki z krótkim przykładem kodu QR
Wygeneruj kod QR o niestandardowym wyglądzie za pomocą zaledwie kilku wierszy kodu. Aby zapoznać się z innymi przykładami, odwiedź stronę z przykładem tworzenia kodów kreskowych i zapoznaj się z samouczkiem dotyczącym odczytu kodów kreskowych, aby uzyskać kompleksowe rozwiązania w zakresie kodów kreskowych. Dodatkowe przykłady obejmują odczytywanie BARCODE-ów z plików PDF oraz tworzenie BARCODE-ów na podstawie danych:
using IronBarCode;
// Create QR code with custom size and error correction
var qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High);
// Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy);
qrCode.AddBarcodeValueTextBelowBarcode();
// Save as image
qrCode.SaveAsPng("quickstart-qr.png");
// Export for API
byte[] pngBytes = qrCode.ToPngBinaryData();
using IronBarCode;
// Create QR code with custom size and error correction
var qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High);
// Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy);
qrCode.AddBarcodeValueTextBelowBarcode();
// Save as image
qrCode.SaveAsPng("quickstart-qr.png");
// Export for API
byte[] pngBytes = qrCode.ToPngBinaryData();
Imports IronBarCode
' Create QR code with custom size and error correction
Dim qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
' Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy)
qrCode.AddBarcodeValueTextBelowBarcode()
' Save as image
qrCode.SaveAsPng("quickstart-qr.png")
' Export for API
Dim pngBytes As Byte() = qrCode.ToPngBinaryData()
IronBarcode obsługuje wdrażanie na platformach AWS Lambda, Azure, Docker oraz platformach mobilnych za pośrednictwem .NET MAUI. Aby uzyskać pomoc techniczną, prześlij zgłoszenie do działu inżynierii. Zapoznaj się z informacjami dotyczącymi ujawnionych luk w zabezpieczeniach (CVE) w kontekście wymagań bezpieczeństwa Enterprise.
Zapoznaj się z funkcjami odczytu kodów kreskowych, aby zrozumieć pełne możliwości rozpoznawania kodów kreskowych, w tym obsługę odczytu kodów kreskowych Code 39 i innych specjalistycznych formatów. Kompletny zestaw funkcji biblioteki sprawia, że nadaje się ona do zastosowań Enterprise wymagających niezawodnych możliwości generowania i skanowania BarCode'ów.
Często Zadawane Pytania
Jak wygenerować kod QR w aplikacji .NET?
W aplikacji .NET można wygenerować kod QR za pomocą metody QRCodeWriter.CreateQrCode w bibliotece IronBarcode. Metoda ta pozwala określić dane kodu QR, jego rozmiar oraz poziom korekcji błędów.
Jakie opcje dostosowywania są dostępne dla kodów QR?
IronBarcode umożliwia dostosowywanie kodów QR, w tym zmianę kolorów i osadzanie obrazów, takich jak logo firmy. Funkcje te zwiększają atrakcyjność wizualną i integrację marki z kodami QR.
Jak mogę zainstalować bibliotekę IronBarcode w moim projekcie?
Możesz zainstalować IronBarcode w swoim projekcie za pomocą interfejsu użytkownika menedżera pakietów NuGet w Visual Studio, konsoli menedżera pakietów lub pobierając go ze strony internetowej NuGet.
Czy IronBarcode może służyć do odczytywania kodów kreskowych z klatek wideo?
Tak, IronBarcode może przetwarzać klatki wideo, co pozwala mu odczytywać kody kreskowe w czasie rzeczywistym poprzez korekcję obrotu i szumów, zwiększając w ten sposób wydajność odczytu kodów kreskowych.
W jakich formatach plików można zapisywać kody QR wygenerowane za pomocą IronBarcode?
Kody QR wygenerowane za pomocą IronBarcode można zapisać w wielu formatach, w tym PNG i HTML, co zapewnia elastyczność dostosowaną do różnych potrzeb aplikacji.
Czy IronBarcode nadaje się zarówno do aplikacji konsolowych, jak i internetowych?
Tak, IronBarcode jest wszechstronny i może być używany zarówno w aplikacjach konsolowych, jak i internetowych .NET MVC, co czyni go solidnym wyborem dla różnych środowisk programistycznych.
Jakie poziomy korekcji błędów są dostępne dla kodów QR w IronBarcode?
IronBarcode obsługuje cztery poziomy korekcji błędów dla kodów QR: niski, średni, wysoki i najwyższy, zapewniając integralność danych nawet w przypadku uszkodzenia kodu QR.
Jakie są opcje licencyjne dla IronBarcode?
IronBarcode oferuje bezpłatną licencję dla programistów oraz wersję premium, która obejmuje dodatkowe wsparcie i aktualizacje, dostosowane do różnych potrzeb programistycznych i biznesowych.
Czy IronBarcode jest kompatybilny z .NET Core i .NET Framework?
Tak, IronBarcode jest kompatybilny zarówno z .NET Core, jak i .NET Framework, obsługując różne architektury, w tym systemy 32- i 64-bitowe.




