A .NET Framework library for generating QR codes and Aztec codes from Base64-encoded data. Supports multiple image formats (PNG, JPEG, BMP) with configurable size and error correction levels. Built on ZXing.Net with ISO-8859-1 encoding support.
$ dotnet add package AztecQRGenerator.CoreA powerful .NET Framework library for generating QR codes and Aztec codes from Base64-encoded data with support for multiple image formats.
Install via NuGet Package Manager:
Install-Package AztecQRGenerator.Core
Or via .NET CLI:
dotnet add package AztecQRGenerator.Core
using AztecQR;
using System.Drawing;
var generator = new QRGenerator();
// Generate QR code in memory
Bitmap qrCode = generator.GenerateQRCodeAsBitmap(
qrstring: "SGVsbG8gV29ybGQh", // Base64 encoded data
lCorrection: 2, // Error correction level (0-10)
lPixelDensity: 300 // Size in pixels
);
// Use the bitmap (e.g., display in UI)
pictureBox.Image = qrCode;
// Remember to dispose when done
qrCode.Dispose();
using AztecQR;
using System.Drawing.Imaging;
var generator = new QRGenerator();
// Save as PNG (recommended)
bool success = generator.GenerateQRCodeToFile(
qrstring: "SGVsbG8gV29ybGQh",
lCorrection: 2,
lPixelDensity: 300,
filePath: "qrcode.png",
format: ImageFormat.Png
);
using AztecQR;
using System.Drawing;
var generator = new AztecGenerator();
// Generate Aztec code in memory
Bitmap aztecCode = generator.GenerateAztecCodeAsBitmap(
aztecstring: "SGVsbG8gV29ybGQh",
lCorrection: 2,
lPixelDensity: 300
);
// Or save directly to file
generator.GenerateAztecCodeToFile(
aztecstring: "SGVsbG8gV29ybGQh",
lCorrection: 2,
lPixelDensity: 300,
filePath: "aztec.png",
format: ImageFormat.Png
);
| Format | Extension | Quality | File Size | Recommended For |
|---|---|---|---|---|
| PNG | .png | Excellent (lossless) | Moderate | ? QR/Aztec codes (default) |
| JPEG | .jpg, .jpeg | Fair (lossy) | Small | ?? Not recommended for barcodes |
| BMP | .bmp | Excellent (lossless) | Very Large | ?? Legacy systems only |
Recommendation: Use PNG format for barcodes. JPEG compression can cause artifacts that reduce scanability.
GenerateQRCodeAsBitmap(string qrstring, int lCorrection, int lPixelDensity)
Bitmap - QR code as a bitmap objectGenerateQRCodeToFile(string qrstring, int lCorrection, int lPixelDensity, string filePath, ImageFormat format)
bool - True if successfulGenerateAztecCodeAsBitmap(string aztecstring, int lCorrection, int lPixelDensity)
Bitmap - Aztec code as a bitmap objectGenerateAztecCodeToFile(string aztecstring, int lCorrection, int lPixelDensity, string filePath, ImageFormat format)
bool - True if successfulImageFormat.Png, ImageFormat.Jpeg, or ImageFormat.Bmpusing (Bitmap qr = generator.GenerateQRCodeAsBitmap("SGVsbG8=", 2, 300))
{
qr.Save("output.png", ImageFormat.Png);
qr.Save("output.jpg", ImageFormat.Jpeg);
qr.Save("output.bmp", ImageFormat.Bmp);
}
try
{
var generator = new QRGenerator();
bool success = generator.GenerateQRCodeToFile(
"SGVsbG8gV29ybGQh", 2, 300, "output.png", ImageFormat.Png
);
if (success)
{
Console.WriteLine("QR code generated successfully!");
}
}
catch (ArgumentException ex)
{
Console.WriteLine($"Invalid input: {ex.Message}");
}
catch (InvalidOperationException ex)
{
Console.WriteLine($"Generation failed: {ex.Message}");
}
catch (IOException ex)
{
Console.WriteLine($"File error: {ex.Message}");
}
The library includes built-in logging to help with debugging:
// Set minimum log level (default: Info)
Logger.Instance.SetMinimumLogLevel(LogLevel.Debug);
// Logs are written to: {AppDirectory}/Logs/AztecQR_yyyyMMdd.log
private void GenerateQRCode()
{
var generator = new QRGenerator();
string base64Data = Convert.ToBase64String(
Encoding.UTF8.GetBytes(textBox.Text)
);
Bitmap qrCode = generator.GenerateQRCodeAsBitmap(base64Data, 2, 300);
pictureBox.Image = qrCode;
}
public ActionResult GenerateQRCode(string data)
{
var generator = new QRGenerator();
using (Bitmap qrCode = generator.GenerateQRCodeAsBitmap(data, 2, 300))
{
using (MemoryStream ms = new MemoryStream())
{
qrCode.Save(ms, ImageFormat.Png);
return File(ms.ToArray(), "image/png");
}
}
}
var generator = new QRGenerator();
var dataList = new List<string> { "data1", "data2", "data3" };
foreach (var data in dataList)
{
string fileName = $"qr_{DateTime.Now.Ticks}.png";
generator.GenerateQRCodeToFile(data, 2, 300, fileName, ImageFormat.Png);
}
Invalid Base64 String
Convert.ToBase64String() to encode dataFile Access Denied
Low Scan Success Rate
MIT License - See LICENSE for details
Johan Henningsson
Version 1.2.0 - Multiple format support, in-memory generation, comprehensive logging