
QR Codes are a very popular way to pass on information - for example an URL. The QR code can be placed on all kinds of places, for example in parking lots for buying parking tickets.
.NET does not offer the possibility to create such images out of the box; you need libraries like ZXing . I chose ZXing because it is Apache 2.0 licensed. If you use ZXing commercially, then it would be appropriate if you leave a corresponding Donation .
ZXing
The main library ZXing.Net is structured in such a way that the basic behavior is implemented. The actual BarcodeWriter implementations are not included. Bitmap is not multi-platform capable; other implementations require extra licenses (e.g. ImageSharp for commercial use) - so I use ZXing.Net.Bindings.SkiaSharp for this example.
The implementation of SkiaSharp is very simple here: I only need the settings and then the actual writer.
1public SKBitmap GenerateUrlQrCode(string url, int width, int height)
2{
3 // settings
4 QrCodeEncodingOptions s_options = new()
5 {
6 DisableECI = true,
7 CharacterSet = "UTF-8",
8 Width = width,
9 Height = height
10 };
11
12 // create writer
13 BarcodeWriter<SKBitmap> writer = new()
14 {
15 Format = BarcodeFormat.QR_CODE,
16 Options = s_options
17 };
18
19 // write data
20 SKBitmap bitmap = writer.Write(url);
21
22 return bitmap;
23}
The method can now be used, for example, to pack the image into a MemoryStream.
1SKBitmap bitmap = GenerateUrlQrCode("https://schwabencode.com", 500, 500);
2
3// bitmap as png stream
4MemoryStream stream = new();
5stream.Write(bitmap.Bytes, 0, bitmap.Bytes.Length);
6
7..
8
9return stream;
The use of the generated MemoryStream is now very versatile; uploading to an Azure Blob, returning to an HTTP client, sending to a cell phone…
Related articles

Feb 04, 2025 - 3 min read
Create an Entra Local User Account via Microsoft Graph with .NET
The Microsoft Graph and Entra documentation are both very comprehensive and provide a lot of information - but they often contain no …

Jan 20, 2025 - 4 min read
The power of Aggressive Inlining in .NET and C#
If you browse through certain libraries or the .NET Runtime from time to time, you will notice that the attribute …

Jan 15, 2025 - 5 min read
Replace FluentAssertions with AI
New year - new .NET drama. You would have thought that positive lessons had been learned from the last Moq drama; but we were proven wrong.
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.
