Write QR Codes in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Wprowadzenie

Dzięki IronQR programiści mogą tworzyć kody QR dla popularnych formatów obrazów i dostosowywać je poprzez dodawanie kolorów tła, marginesów, logotypów, a także umieszczanie ich w plikach PDF. Dla bardziej zaawansowanego użytku oferuje również kontrolę nad korekcją błędów i wersjami.

Ten artykuł omówi kluczowe funkcje IronQR z przykładami, pomagając Ci zrozumieć, jak używać go do tworzenia kodów QR w C# i efektywnie stosować w swoich projektach.

Spis treści

Rozpocznij używanie IronQR w swoim projekcie już dziś dzięki darmowej wersji próbnej.

Pierwszy krok:
green arrow pointer

Dane wejściowe

Tekst, URL-e, liczby

IronQR może konwertować szeroki zakres typów danych, w tym tekst, URL-e i liczby, na kody QR. Niezależnie od tego, czy tworzysz kody QR do linków lub tekstów w celach marketingowych i komunikacyjnych, kody numeryczne do zarządzania inwentarzem, czy kodowanie danych binarnych lub strumieni do czytelnych kodów QR, IronQR zapewnia wszystkie potrzebne wsparcie.

Dodatkowo, API jest proste w użyciu. Klasa QrWriter oferuje kilka przeciazen, umozliwiajac wprowadzenie roznych rodzajow danych jako wejscia, co zmniejsza zlozonosc i usprawnia proces.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-1.cs
using IronQr;
using IronSoftware.Drawing;

string text = "Hello, World!";
string url = "https://ironsoftware.com/csharp/qr/";
string alphanumeric = "WATERSKU-12356";

// Create QR code
QrCode textQr = QrWriter.Write(text);
// Save QR code as a bitmap
AnyBitmap textQrImage = textQr.Save();
// Save QR code as file
textQrImage.SaveAs("textQr.png");

QrCode urlQr = QrWriter.Write(url);
AnyBitmap urlQrImage = urlQr.Save();
urlQrImage.SaveAs("urlQr.png");

QrCode alphanumericQr = QrWriter.Write(alphanumeric);
AnyBitmap alphanumericQrImage = alphanumericQr.Save();
alphanumericQrImage.SaveAs("alphanumericQr.png");
Imports IronQr
Imports IronSoftware.Drawing

Private text As String = "Hello, World!"
Private url As String = "https://ironsoftware.com/csharp/qr/"
Private alphanumeric As String = "WATERSKU-12356"

' Create QR code
Private textQr As QrCode = QrWriter.Write(text)
' Save QR code as a bitmap
Private textQrImage As AnyBitmap = textQr.Save()
' Save QR code as file
textQrImage.SaveAs("textQr.png")

Dim urlQr As QrCode = QrWriter.Write(url)
Dim urlQrImage As AnyBitmap = urlQr.Save()
urlQrImage.SaveAs("urlQr.png")

Dim alphanumericQr As QrCode = QrWriter.Write(alphanumeric)
Dim alphanumericQrImage As AnyBitmap = alphanumericQr.Save()
alphanumericQrImage.SaveAs("alphanumericQr.png")
$vbLabelText   $csharpLabel

Dane binarne i strumienie

Podobnie, mozemy przeksztalcic dane binarne i strumienie w kody QR przy uzyciu tej samej metody Write, o ktorej wspomniano wczesniej.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-2.cs
using IronQr;
using IronSoftware.Drawing;
using System.Text;

byte[] bytes = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/");

// Create QR code
QrCode bytesQr = QrWriter.Write(bytes);

// Save QR code as a bitmap
AnyBitmap qrImage = bytesQr.Save();

// Save QR code bitmap to file
qrImage.SaveAs("bytesQr.png");
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Text

Private bytes() As Byte = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/")

' Create QR code
Private bytesQr As QrCode = QrWriter.Write(bytes)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = bytesQr.Save()

' Save QR code bitmap to file
qrImage.SaveAs("bytesQr.png")
$vbLabelText   $csharpLabel

klasa Program { static void Main() { // Stwórz instance zapisywacza kodów QR QrWriter writer = QrWriter.CreateQrCode();

    // Przykładowe dane binarne
    byte[] data = `{ 0x01, 0x02, 0x03, 0x04 }`;

    // Zapisz dane binarne do kodu QR
    writer.Write(data)

.SaveAs("binary-qr.png");

    // Przykład użycia strumienia pamięci
    using (MemoryStream stream = new MemoryStream(data))
    {

writer.Write(stream) .SaveAs("stream-qr.png"); } } }

Metoda Write posiada przeciazenia, ktore przyjmuja jako wejscia tablice bajtow i strumienie. Dla strumieni mozemy utworzyc MemoryStream z tablicy bajtow, a nastepnie przeksztalcic go w kod QR. Jest to przydatne, gdy użytkownicy potrzebują bardziej precyzyjnej kontroli nad kawałkami danych, ponieważ strumienie mogą być bardziej oszczędne pamięciowo.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-3.cs
using IronQr;
using IronSoftware.Drawing;
using System.IO;
using System.Text;

MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/"));

// Create QR code
QrCode streamQr = QrWriter.Write(stream);

// Save QR code as a bitmap
AnyBitmap streamQrImage = streamQr.Save();

// Save QR code bitmap as file
streamQrImage.SaveAs("streamQr.png");
Imports IronQr
Imports IronSoftware.Drawing
Imports System.IO
Imports System.Text

Private stream As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/"))

' Create QR code
Private streamQr As QrCode = QrWriter.Write(stream)

' Save QR code as a bitmap
Private streamQrImage As AnyBitmap = streamQr.Save()

' Save QR code bitmap as file
streamQrImage.SaveAs("streamQr.png")
$vbLabelText   $csharpLabel

Eksportowanie kodów QR

IronQR jest elastyczny i dostosowuje się do różnych przypadków użycia wymagających różnych formatów plików. Mozesz zapisac kody QR w wielu formatach, takich jak JPG, PNG, GIF i TIFF, uzywajac metody SaveAs.

Zapisz jako obraz

Metoda SaveAs z AnyBitmap automatycznie wykrywa format pliku na podstawie podanej sciezki pliku. W tym przykladzie okreslilem sciezke pliku konczaca sie na .png.

Zwróć uwagęPodczas korzystania z metody SaveAs pamietaj, ze nie ma domyslnego formatu obrazu. Jeśli wpiszesz nieznane rozszerzenie lub zrobisz literówkę w ścieżce do pliku, obraz zostanie zapisany z niepoprawnym rozszerzeniem.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-4.cs
using IronQr;
using IronSoftware.Drawing;

// Create a QR code object
QrCode qr = QrWriter.Write("hello world");

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qr.png");
Imports IronQr
Imports IronSoftware.Drawing

' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qr.png")
$vbLabelText   $csharpLabel

System.Drawing.Images

Przeksztalcenie obrazow w obiekt System.Drawing.Images z Microsoft, pozwala na uzycie klasy Bitmap do zapisania kodu QR na sciezce pliku. W tym przykladzie metoda Save zapisuje kod QR jako plik PNG na sciezce qrBitmap.png.

System.Drawing.Common jest obslugiwane tylko na platformie Windows.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-5.cs
using IronQr;
using System.Drawing;

// Create a QR code object
QrCode qr = QrWriter.Write("hello world");

// Save QR code as a bitmap
Bitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.Save("qrBitmap.png");
Imports IronQr
Imports System.Drawing

' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")

' Save QR code as a bitmap
Private qrImage As Bitmap = qr.Save()

' Save QR code bitmap as file
qrImage.Save("qrBitmap.png")
$vbLabelText   $csharpLabel

IronSoftware.Drawing

Ze wzgledu na brak zgodnosci z roznymi platformami System.Drawing.Common, programisci moga napotkac problemy podczas utrzymywania aplikacji dzialajacych na roznych platformach. IronQR moze korzystac z System.Drawing.Common i IronSoftware.Drawing.

IronQR korzysta z klasy AnyBitmap z IronSoftware.Drawing, uniwersalnie zgodnej klasy Bitmap, ktora niejawnie przeksztalca sie na nastepujace:

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SixLabors.ImageSharp
  • Microsoft.Maui.Graphics.Platform.PlatformImage

Dzieki tej potężnej bibliotece open-source, IronQR osiaga wsparcie dla roznych platform oraz zgodnosc z .NET 8, .NET 7, .NET 6, .NET 5, .NET Core, .NET Standard i .NET Framework 4.6.2+. Aby uzyskać więcej informacji na temat biblioteki, zapoznaj się z witryną IronSoftware.Drawing.

Dodaj na PDF

IronQR pozwala programistom dodawać kody QR do istniejących dokumentów PDF, ułatwiając innym szybki dostęp do linków lub dodatkowych zasobów. Obsługiwane jest dodawanie kodów QR zarówno na pojedynczych stronach, jak i na wielu stronach.

Dodaj do pojedynczej strony

Po utworzeniu kodu QR, wywolaj metode StampToExistingPdfPage z obiektu QrCode. Metoda ta wymaga podania ścieżki do pliku, współrzędnych (x i y), numeru strony i opcjonalnego hasła, jeśli PDF jest zabezpieczony hasłem. Po podaniu argumentów metoda dodaje kod QR i zapisuje PDF.

Zwróć uwagęTa metoda jest oparta na stronach PDF, numeracja stron zaczyna się od 1 zamiast 0.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-6.cs
using IronQr;

// Create a QR code object
QrCode qr = QrWriter.Write("hello world");

string filepath = "example.pdf";
int x = 100;
int y = 150;
int page = 1;

// Stamp QR code to (100, 150) of the pdf on page 1
qr.StampToExistingPdfPage(filepath, x, y, page);
Imports IronQr

' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")

Private filepath As String = "example.pdf"
Private x As Integer = 100
Private y As Integer = 150
Private page As Integer = 1

' Stamp QR code to (100, 150) of the pdf on page 1
qr.StampToExistingPdfPage(filepath, x, y, page)
$vbLabelText   $csharpLabel

Dodaj do wielu stron

Podobnie jak w przykladzie powyzej, glowna roznica polega na tym, ze metoda StampToExistingPdfPages przyjmuje liste numerow stron zamiast jednej.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-7.cs
using IronQr;
using System.Collections.Generic;

// Create a QR code object
QrCode qr = QrWriter.Write("hello world");

string filepath = "example.pdf";
int x = 100;
int y = 150;
List<int> pages = new List<int>();
pages.Add(1);
pages.Add(2);
pages.Add(3);
pages.Add(4);

// Stamp QR code to (100, 150) of the pdf on pages 1-4
qr.StampToExistingPdfPages(filepath, x, y, pages);
Imports IronQr
Imports System.Collections.Generic

' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")

Private filepath As String = "example.pdf"
Private x As Integer = 100
Private y As Integer = 150
Private pages As New List(Of Integer)()
pages.Add(1)
pages.Add(2)
pages.Add(3)
pages.Add(4)

' Stamp QR code to (100, 150) of the pdf on pages 1-4
qr.StampToExistingPdfPages(filepath, x, y, pages)
$vbLabelText   $csharpLabel

Wyjście z obu przykładów

alt text


Opcje kodów QR

IronQR oferuje szerokie opcje dostosowywania w celu precyzyjnego dostrojenia działania i funkcjonalności kodów QR. Klasa QrOptions zapewnia kilka parametrow, takich jak kontrola wersji, typ kodowania, kodowanie znakow i poziomy poprawy bledow. Przyjrzyjmy się bliżej tym opcjom.

Kodowanie

IronQR obsługuje wiele typów kodów QR zarówno do tworzenia, jak i czytania. Poniżej wymienione są obsługiwane typy:

  • QRCode: Jest to standardowy kod QR, powszechnie stosowany dzisiaj. Może przechowywać do 7 089 znaków numerycznych lub 4 296 znaków alfanumerycznych.
  • MicroQRCode: Mniejsza wersja standardowego kodu QR, moze przechowywac do 35 cyfr liczbowych lub 21 znaków alfanumerycznych.
  • RMQRCode: Prostokatny mikro kod QR to kompaktowa wersja kodu QR, oferujaca elastycznosc w zakresie proporcji.
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-8.cs
using IronQr;
using IronSoftware.Drawing;

QrOptions options = new QrOptions
{
    // Change encoding to micro QR code
    Encoding = IronQr.Enum.QrEncoding.MicroQRCode,
};

// Create QR code
QrCode qr = QrWriter.Write("1234", options);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qrImage.png");
Imports IronQr
Imports IronSoftware.Drawing

Private options As New QrOptions With {.Encoding = IronQr.Enum.QrEncoding.MicroQRCode}

' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
$vbLabelText   $csharpLabel

Korekcja błędów

IronQR używa standardowej korekcji błędów QR, aby zapewnić, że wszystkie generowane kody QR są odporne na błędy i niezawodne, nawet w trudnych warunkach. Dodatkowo, IronQR pozwala na pełną kontrolę nad poziomem korekcji błędów w celu dalszego dostrojenia.

Dostepne sa cztery poziomy poprawy bledow, zapewniane przez QrErrorCorrectionLevel:

  • Highest: poprawa bledow 30%
  • High: poprawa bledow 25%
  • Medium: poprawa bledow 15%
  • Low: poprawa bledow 7%
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-9.cs
using IronQr;
using IronSoftware.Drawing;

QrOptions options = new QrOptions
{
    // Change error correction level to medium
    ErrorCorrectionLevel = QrErrorCorrectionLevel.Medium,
};

// Create QR code
QrCode qr = QrWriter.Write("1234", options);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qrImage.png");
Imports IronQr
Imports IronSoftware.Drawing

Private options As New QrOptions With {.ErrorCorrectionLevel = QrErrorCorrectionLevel.Medium}

' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
$vbLabelText   $csharpLabel

Wyższa korekcja błędów zapewnia większą odporność na błędy podczas czytania kodu QR, co zwiększa prawdopodobieństwo jego zeskanowania w niższych rozdzielczościach w porównaniu z kodem o niskiej korekcji błędów. Możesz przetestować różne opcje w zależności od swoich potrzeb.

alt text

Wersja kodu QR

Możesz dostosować wersję kodu QR, aby przechowywać więcej danych. Wyższe wersje są idealne do inwentaryzacji lub logistyki, podczas gdy niższe wersje dobrze sprawdzają się dla mniejszych danych, takich jak krótkie URL-e. Po prostu zmien wlasciwosc Version w obiekcie QrOptions i przekaz go do metody Write, aby wygenerowac wymagany kod QR.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-10.cs
using IronQr;
using IronSoftware.Drawing;

QrOptions options = new QrOptions
{
    // Change QR code version to 40
    Version = 40,
};

// Create QR code
QrCode qr = QrWriter.Write("1234", options);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qrImage.png");
Imports IronQr
Imports IronSoftware.Drawing

Private options As New QrOptions With {.Version = 40}

' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
$vbLabelText   $csharpLabel

alt text

Jak widać na wyjściu, wersja 40 kodu QR jest znacznie bardziej skomplikowana i gęsta w porównaniu z wersją 5.

Niższe wersje wymagają bardziej precyzyjnego skanowania i mogą być trudne do zeskanowania bez skanerów o wyższej rozdzielczości. Jednak wyższe wersje są łatwiejsze do skanowania, nawet przy użyciu kamer o niskiej rozdzielczości. Aby uzyskać bardziej szczegółowy przewodnik po wyborze wersji QR na podstawie pojemności, zapoznaj się z listą wersji QR.

Kodowanie znaków

Ta opcja określa, jak kod QR jest kodowany. W naszym przykładzie zmieniliśmy go na "UTF-32", podczas gdy domyślnym kodowaniem znaków jest "ISO-8859-1".

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-11.cs
using IronQr;
using IronSoftware.Drawing;

QrOptions options = new QrOptions
{
    // Change character encoding to UTF-32
    CharacterEncoding = "UTF-32"
};

// Create QR code
QrCode qr = QrWriter.Write("1234", options);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qrImage.png");
Imports IronQr
Imports IronSoftware.Drawing

Private options As New QrOptions With {.CharacterEncoding = "UTF-32"}

' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
$vbLabelText   $csharpLabel

Stylizacja kodów QR

Oprócz łatwych w użyciu metod i elastyczności w obsłudze danych wejściowych, IronQR oferuje wiele opcji dla dostosowywania i stylizacji kodów QR, aby były one unikalne. Klasa QrStyleOptions dostarcza rozne parametry do personalizacji wszystkich aspektow kodu QR. Przyjrzyjmy się dostępnym opcjom.

Zmiana rozmiaru

Aby zmienic rozmiar kodu QR, mozesz ustawic wlasciwosc Dimensions obiektu QrStyleOptions, a nastepnie przekazac go do metody Save. Domyślnie kod QR jest zapisany z rozdzielczością 300px. W tym przykładzie zapisaliśmy kod QR z rozdzielczością 600px zamiast 300px.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-12.cs
using IronQr;
using IronSoftware.Drawing;

QrStyleOptions styleOptions = new QrStyleOptions()
{
    // Change the dimensions to 600px
    Dimensions = 600,
};

string url = "https://ironsoftware.com/csharp/qr/";

// Create QR code
QrCode qr = QrWriter.Write(url);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save(styleOptions);

// Save QR code bitmap as file
qrImage.SaveAs("qrURLResized.png");
Imports IronQr
Imports IronSoftware.Drawing

Private styleOptions As New QrStyleOptions() With {.Dimensions = 600}

Private url As String = "https://ironsoftware.com/csharp/qr/"

' Create QR code
Private qr As QrCode = QrWriter.Write(url)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)

' Save QR code bitmap as file
qrImage.SaveAs("qrURLResized.png")
$vbLabelText   $csharpLabel

alt text

Marginesy i obramowanie

Aby dostosowac marginesy i obramowania, mozemy uzyc wlasciwosci Margins klasy QrStyleOptions. Ta właściwość kontroluje marginesy kodu QR ze wszystkich stron, z domyślną wartością 10px. W naszym przykładzie ustawiliśmy margines na 20px.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-13.cs
using IronQr;
using IronSoftware.Drawing;

QrStyleOptions styleOptions = new QrStyleOptions()
{
    // Change margins to 20px
    Margins = 20
};

string url = "https://ironsoftware.com/csharp/qr/";

// Create QR code
QrCode qr = QrWriter.Write(url);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save(styleOptions);

// Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png");
Imports IronQr
Imports IronSoftware.Drawing

Private styleOptions As New QrStyleOptions() With {.Margins = 20}

Private url As String = "https://ironsoftware.com/csharp/qr/"

' Create QR code
Private qr As QrCode = QrWriter.Write(url)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)

' Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png")
$vbLabelText   $csharpLabel

alt text

Zmień marginesy dla każdej strony

IronQR pozwala również użytkownikom określić różne marginesy dla każdej strony, oferując bardziej precyzyjną kontrolę.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-14.cs
using IronQr;
using IronSoftware.Drawing;

QrStyleOptions styleOptions = new QrStyleOptions()
{
    // Change margins
    MarginBottom = 30,
    MarginTop = 100,
    MarginRight = 40,
    MarginLeft = 20,
};

string url = "https://ironsoftware.com/csharp/qr/";

// Create QR code
QrCode qr = QrWriter.Write(url);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save(styleOptions);

// Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png");
Imports IronQr
Imports IronSoftware.Drawing

Private styleOptions As New QrStyleOptions() With {
	.MarginBottom = 30,
	.MarginTop = 100,
	.MarginRight = 40,
	.MarginLeft = 20
}

Private url As String = "https://ironsoftware.com/csharp/qr/"

' Create QR code
Private qr As QrCode = QrWriter.Write(url)

' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)

' Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png")
$vbLabelText   $csharpLabel

Zmiana kolorów

Mozemy dodac kolory do kodu QR i jego tla, korzystajac z klasy QrStyleOptions. Dostosowywanie kolorów sprawia, że kod QR staje się bardziej unikalny i przyciągający wzrok. Mozesz zmienic kolor, uzywajac wlasciwosci Color i BackgroundColor. Pamietaj, aby zaimportowac IronSoftware.Drawing dla listy dostepnych kolorow do przypisania.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs
using IronQr;
using IronSoftware.Drawing;

// Load new logo image
AnyBitmap logo = AnyBitmap.FromFile("sample.png");

// Add new logo to QR code style options
QrStyleOptions styleOptions = new QrStyleOptions()
{
    Logo = new QrLogo(logo, 50, 50, 10),
};

string url = "https://ironsoftware.com/csharp/qr/";

// Create QR code
QrCode qr = QrWriter.Write(url);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save(styleOptions);

// Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png");
Imports IronQr
Imports IronSoftware.Drawing

' Load new logo image
Dim logo As AnyBitmap = AnyBitmap.FromFile("sample.png")

' Add new logo to QR code style options
Dim styleOptions As New QrStyleOptions() With {
    .Logo = New QrLogo(logo, 50, 50, 10)
}

Dim url As String = "https://ironsoftware.com/csharp/qr/"

' Create QR code
Dim qr As QrCode = QrWriter.Write(url)

' Save QR code as a bitmap
Dim qrImage As AnyBitmap = qr.Save(styleOptions)

' Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png")
$vbLabelText   $csharpLabel

alt text

Oprócz kolorów i wymiarów, możesz również dodać logo swojej firmy do kodu QR. Pomaga to użytkownikom natychmiast rozpoznać i powiązać kod QR z Twoją marką. Wlasciwosc Logo ulatwia personalizacje kodu QR poprzez dodanie logo twojej firmy.

:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs
using IronQr;
using IronSoftware.Drawing;

// Load new logo image
AnyBitmap logo = AnyBitmap.FromFile("sample.png");

// Add new logo to QR code style options
QrStyleOptions styleOptions = new QrStyleOptions()
{
    Logo = new QrLogo(logo, 50, 50, 10),
};

string url = "https://ironsoftware.com/csharp/qr/";

// Create QR code
QrCode qr = QrWriter.Write(url);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save(styleOptions);

// Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png");
Imports IronQr
Imports IronSoftware.Drawing

' Load new logo image
Dim logo As AnyBitmap = AnyBitmap.FromFile("sample.png")

' Add new logo to QR code style options
Dim styleOptions As New QrStyleOptions() With {
    .Logo = New QrLogo(logo, 50, 50, 10)
}

Dim url As String = "https://ironsoftware.com/csharp/qr/"

' Create QR code
Dim qr As QrCode = QrWriter.Write(url)

' Save QR code as a bitmap
Dim qrImage As AnyBitmap = qr.Save(styleOptions)

' Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png")
$vbLabelText   $csharpLabel

alt text

Klasa QrLogo pozwala na dalsza personalizacje wygladu logo. Poniżej znajdują się dostępne właściwości:

  • Bitmap: Reprezentuje obraz, ktory chcesz uzyc jako logo.
  • Width: Reprezentuje szerokosc logo. Domyślną wartością jest 0.
  • Height: Reprezentuje wysokosc logo. Domyślną wartością jest 0.
  • CornerRadius: Reprezentuje promien do zaokraglania rogów logo. Domyślnie ustawiony jest na 0, co oznacza, że logo będzie miało kwadratowe narożniki.
using IronQRCode;
using IronSoftware.Drawing;

klasa Program
{
    static void Main()
    {
        `QrStyleOptions` styleOptions = new `QrStyleOptions`
        {
            `Logo` = new `QrLogo`
            {
                `Bitmap` = `AnyBitmap.FromBitmap`("path/to/logo.png"),
                `Width` = 50,
                `Height` = 50,
                `CornerRadius` = 5
            }
        };

        `QrCode` qr = `QrWriter.CreateQrCode`()
                               .Write("Customized Logo Example");

        qr.SaveAs("example-customized-logo-qr.png", styleOptions);
    }
}
using IronQRCode;
using IronSoftware.Drawing;

klasa Program
{
    static void Main()
    {
        `QrStyleOptions` styleOptions = new `QrStyleOptions`
        {
            `Logo` = new `QrLogo`
            {
                `Bitmap` = `AnyBitmap.FromBitmap`("path/to/logo.png"),
                `Width` = 50,
                `Height` = 50,
                `CornerRadius` = 5
            }
        };

        `QrCode` qr = `QrWriter.CreateQrCode`()
                               .Write("Customized Logo Example");

        qr.SaveAs("example-customized-logo-qr.png", styleOptions);
    }
}
Imports IronQRCode
Imports IronSoftware.Drawing

Module Program
    Sub Main()
        Dim styleOptions As New QrStyleOptions With {
            .Logo = New QrLogo With {
                .Bitmap = AnyBitmap.FromBitmap("path/to/logo.png"),
                .Width = 50,
                .Height = 50,
                .CornerRadius = 5
            }
        }

        Dim qr As QrCode = QrWriter.CreateQrCode().Write("Customized Logo Example")

        qr.SaveAs("example-customized-logo-qr.png", styleOptions)
    End Sub
End Module
$vbLabelText   $csharpLabel

Sprawdzanie tolerancji błędów

Oprócz szerokiej elastyczności w formatach plików i dostosowaniach, elastyczność dotyczy także aspektów debugowania i obsługi błędów. IronQR zapewnia różnorodne narzędzia dla programistów do obsługi wyjątków i pisania testów jednostkowych w celu weryfikacji aplikacji.

Kontrolne sumy

Kody QR czasami mogą ulec uszkodzeniu, ale IronQR zawiera wbudowane sumy kontrolne i korekcję danych, aby utrzymać ich funkcjonalność. Używa algorytmu korekcji błędów Reed-Solomon, zapewniając, że kody QR pozostają odporne na błędy.

Szczegółowe komunikaty o błędach

IronQR zapewnia szczegółowe komunikaty o błędach, które pomagają użytkownikom szybko zidentyfikować problemy. Te komunikaty zawierają listę specyficznych wyjątków, ułatwiając debugowanie i rozwiązywanie problemów. Ponizej znajduje sie lista IronQrException uzytych przez biblioteke.

  • IronQrEncodingException: Podklasa IronQrException, ten blad pojawia sie, gdy wystapi problem z zapisem kodu QR. Na przykład pojawi się, jeśli użytkownik spróbuje stworzyć kod QR z pustego ciągu.

alt text

  • IronQrFileException: Podklasa IronQrException, ten blad pojawia sie, gdy wystapi problem zwiazany z plikiem.

  • IronQrPdfPasswordExcception: Podklasa IronQrException, ten blad pojawia sie, gdy plik PDF, ktory uzytkownik probuje opieczetowac, jest zabezpieczony haslem, a podane haslo jest nieprawidlowe lub nie zostalo podane zadne. Obejmuje również inne błędy związane z PDF, takie jak gdy nie można otworzyć PDF, jak pokazano w przykładzie.

alt text

Wnioski

IronQR zapewnia kompleksowy zestaw metod do generowania i dostosowywania kodów QR w aplikacjach .NET. Dzięki swoim solidnym funkcjom, programiści mogą łatwo tworzyć kody QR z różnymi kodowaniami danych, stylami wizualnymi i poziomami korekcji błędów. Wsparcie biblioteki dla różnorodnych formatów wyjściowych i bezproblemowa integracja z istniejącymi dokumentami sprawiają, że jest to wszechstronne narzędzie dla każdego projektu kodów QR. Niezależnie od tego, czy potrzebujesz podstawowych kodów QR, czy zaawansowanych, markowych rozwiązań, IronQR oferuje elastyczność i funkcjonalność, aby efektywnie spełniać Twoje potrzeby.

Aby dowiedzieć się więcej, sprawdź dokumentację IronQR, zacznij eksplorację z bezpłatną wersją próbną i przejrzyj opcje licencjonowania, aby zobaczyć, która plan najlepiej odpowiada Twoim potrzebom.

Często Zadawane Pytania

Jak wygenerować kod QR w C#?

Możesz wygenerować kod QR w C#, korzystając z klasy QrWriter, dostępnej w IronQR. Ta klasa pozwala na pisanie danych do kodu QR i zapisywanie go w różnych formatach obrazów. Po prostu użyj metody Write do kodowania swoich danych i SaveAs do zapisywania kodu QR.

Jakie rodzaje personalizacji mogę zastosować do kodów QR?

IronQR pozwala na personalizację kodów QR poprzez zmianę ich kolorów, dodawanie logo, zmienianie rozmiaru i dostosowywanie marginesów. Użyj klasy QrStyleOptions, aby zastosować te personalizacje.

Czy mogę osadzić kod QR w pliku PDF za pomocą C#?

Tak, można osadzić kod QR w pliku PDF, wykorzystując IronQR, poprzez metody StampToExistingPdfPage lub StampToExistingPdfPages. Umożliwia to określenie lokalizacji i stron, na których ma znajdować się kod QR.

Jak mogę obsłużyć błędy przy tworzeniu kodów QR?

IronQR ma solidne funkcje obsługi błędów, dostarczając komunikaty o błędach, takie jak IronQrEncodingException, IronQrFileException oraz IronQrPdfPasswordException, aby pomóc w debugowaniu i rozwiązywaniu problemów.

Do jakich formatów mogę eksportować kody QR?

Używając IronQR, możesz eksportować kody QR do różnych formatów, w tym JPG, PNG, GIF i TIFF. Metoda SaveAs pozwala określić pożądany format dla wyjścia kodu QR.

Czy ta biblioteka wspiera rozwój międzyplatformowy?

Tak, IronQR wspiera rozwój międzyplatformowy poprzez bibliotekę IronSoftware.Drawing, co czyni ją kompatybilną z różnymi wersjami .NET i platformami.

Czy można dodać logo do kodu QR dla celów brandingu?

Możesz dodać logo do kodu QR, używając IronQR, poprzez ustawienie właściwości Logo w klasie QrStyleOptions, pozwalając na stworzenie markowych kodów QR z dostosowanym wyglądem logo.

Jaki jest cel korekcji błędów w kodach QR?

Korekcja błędów w kodach QR, wspierana przez IronQR, zapewnia, że kody QR pozostają czytelne nawet, jeśli są częściowo uszkodzone. Ta funkcja oferuje cztery poziomy korekcji: Najwyższa, Wysoka, Średnia i Niska, aby pasować do różnych przypadków użycia.

Jakie typy danych mogą być zakodowane w kodach QR?

IronQR może kodować różnorodne typy danych w kodach QR, w tym tekst, URL, liczby, dane binarne i strumienie, oferując elastyczność w reprezentowaniu danych.

Jak mogę stworzyć kod QR z URL w C#?

Aby stworzyć kod QR z URL w C#, użyj klasy QrWriter w IronQR. Wykorzystaj metodę Write do zakodowania URL i SaveAs do zapisania kodu QR jako obrazu.

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
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 70,814 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Chcesz szybkiego dowodu? PM > Install-Package IronQR
uruchom próbkę obserwuj, jak Twój URL staje się kodem QR.