りおんクロニクル


C#でQRコード生成|ZXing・QRCoderで作る高速・高品質QRコード【2026年版】

Home【2026年版】C# / .NET入門と実践ガイド|基礎・業務アプリ開発・SQLite連携まで体系的に解説

C#でQRコードを生成する場合、 ZXing.NETQRCoder の2つが最もよく使われます。 どちらも無料で、業務アプリ・WPF・Web・印刷など幅広く利用できます。

この記事でわかること
・ZXing.NETでQRコード生成(最も簡単)
・QRCoderで高品質QRコード生成(ロゴ合成も可)
・PNG/JPEG/SVG出力
・WPF/WinFormsでの表示
・大量QRコードのバッチ生成
・業務アプリ向けベストプラクティス

1. QRコード生成ライブラリ比較

項目ZXing.NETQRCoder
特徴軽量・簡単・高速高品質・ロゴ合成・SVG対応
画像品質◎(業務向け)
ロゴ合成△(自前で合成)◎(標準対応)
用途簡易QR・大量生成帳票・印刷・ブランドQR

簡単に作りたい → ZXing 高品質・ロゴ入り → QRCoder

2. ZXing.NETでQRコード生成(最も簡単)

■ 2-1. 基本のQRコード生成

using ZXing;
using ZXing.Common;

var writer = new BarcodeWriterPixelData
{
    Format = BarcodeFormat.QR_CODE,
    Options = new EncodingOptions
    {
        Height = 300,
        Width = 300,
        Margin = 1
    }
};

var pixelData = writer.Write("https://example.com");

// PNGとして保存
using var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height,
    System.Drawing.Imaging.PixelFormat.Format32bppRgb);

var data = bitmap.LockBits(
    new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height),
    System.Drawing.Imaging.ImageLockMode.WriteOnly,
    System.Drawing.Imaging.PixelFormat.Format32bppRgb);

System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, data.Scan0, pixelData.Pixels.Length);
bitmap.UnlockBits(data);

bitmap.Save("qrcode_zxing.png");

最小コードでQRコードを生成できるのがZXingの強みです。

3. QRCoderで高品質QRコード生成(ロゴ合成対応)

■ 3-1. 基本のQRコード生成

using QRCoder;

var generator = new QRCodeGenerator();
var data = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.Q);

var qr = new QRCode(data);
using var bitmap = qr.GetGraphic(20); // 20px × モジュール数

bitmap.Save("qrcode_qrcoder.png");

QRCoderは印刷・帳票向けの高品質QRコードが作れます。

■ 3-2. ロゴ入りQRコード(ブランドQR)

using var logo = System.Drawing.Image.FromFile("logo.png");

var qrLogo = qr.GetGraphic(
    20,
    System.Drawing.Color.Black,
    System.Drawing.Color.White,
    logo,
    iconSizePercent: 20,
    iconBorderWidth: 2
);

qrLogo.Save("qrcode_logo.png");

ロゴ入りQRは店舗・製品・イベントなどでよく使われます。

4. SVG出力(Web・印刷向け)

■ QRCoderでSVG生成

var svg = new SvgQRCode(data);
string svgText = svg.GetGraphic(5);

File.WriteAllText("qrcode.svg", svgText);

SVGは拡大しても劣化しないため、印刷物に最適です。

5. WPF / WinFormsでQRコードを表示

■ WPFでImageコントロールに表示

var bitmap = qr.GetGraphic(20);

using var ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.Position = 0;

var img = new BitmapImage();
img.BeginInit();
img.StreamSource = ms;
img.CacheOption = BitmapCacheOption.OnLoad;
img.EndInit();

MyImageControl.Source = img;

WPFアプリでQRコードをプレビューする場合の定番パターンです。

6. 大量QRコードのバッチ生成(1000件〜1万件)

大量生成する場合は、 Parallel.ForEach + ZXing が最速です。

■ 6-1. 並列QRコード生成

var list = File.ReadAllLines("urls.txt");

Parallel.ForEach(list, url =>
{
    var data = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);
    var qr = new QRCode(data);
    using var bmp = qr.GetGraphic(20);

    var file = $"qr_{Guid.NewGuid()}.png";
    bmp.Save(Path.Combine("output", file));
});

CPUコア数をフル活用して高速に生成できます。

7. QRコードのエラー訂正レベル(ECC)

QRコードには4段階のエラー訂正レベルがあります。

ECC誤り訂正率用途
L7%データ量重視
M15%一般用途
Q25%ロゴ入りQR向け
H30%印刷物・汚れに強い

ロゴ入りQR → Q 印刷物 → H Web用途 → M

8. 業務アプリ向けベストプラクティス

まとめ:C#のQRコード生成は“ZXing × QRCoder”で完結する

「QRコードを自動生成したい」「ロゴ入りQRを作りたい」 という現場のニーズに対して、 C#のQRコード生成は非常に強力な解決策になります。 この記事をベースに、あなたのアプリに最適なQRコード生成フローを設計してみてください。

前のページ  次のページ