チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Barcode for .NET»ASP.NETでQRコードをC#で作成する方法【完全ガイド付き】
2025-08-08

ASP.NETでQRコードをC#で作成する方法【完全ガイド付き】

Spire.Barcode for .NETを使ってASP.NET C#でQRコードを生成

QRコードは、認証や非接触決済、URL・連絡先情報の共有など、現代のWebアプリケーションに欠かせない要素となっています。 ASP.NET を使った開発においても、C#でQRコードを生成する機能は、実用的かつ頻繁に求められる機能の一つです。

本記事では、Spire.Barcode for .NET を用いて、ASP.NET(Razor Pagesベース)でQRコードを生成する方法を、実際のコードを交えながら丁寧に解説します。紹介する手法は、MVCやWeb API、Web Formsといった他のASP.NETプロジェクトにも応用可能です。

目次

1. プロジェクトの準備と依存関係

必要な環境:

以下の環境が必要です:

  • Visual Studio 2019 以降
  • .NET 6 以降
  • ASP.NET Core Web アプリ(Razor Pages テンプレート)
  • NuGetパッケージ:Spire.Barcode for .NET

ライブラリのインストール:

NuGet パッケージマネージャーコンソールから以下のコマンドでインストールします:

Install-Package Spire.Barcode

Spire.Barcode は、外部APIを使用せずにQRコードをメモリ上で生成できる、完全な.NET向けバーコードライブラリです。小規模なプロジェクトであれば、Free Spire.Barcode for .NET の利用も可能です。

2. ASP.NETでQRコードを生成(C#)

このセクションでは、ASP.NET Core Razor Pages プロジェクトを使って、QRコード生成機能を実装する方法を解説します。

ステップ1:PageModelにQRコード生成ロジックを追加

以下は、Index.cshtml.cs ファイルに記述するC#コードです。ユーザーの入力を受け取り、Spire.Barcodeを使ってQRコードを生成し、それをBase64文字列としてフロントエンドに返します。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Barcode;

public class IndexModel : PageModel
{
    [BindProperty]
    public string InputData { get; set; }

    public string QrCodeBase64 { get; set; }

    public void OnPost()
    {
        if (!string.IsNullOrWhiteSpace(InputData))
        {
            QrCodeBase64 = GenerateQrCodeBase64(InputData);
        }
    }
    
    private string GenerateQrCodeBase64(string input)
    {
        var settings = new BarcodeSettings
        {
            Type = BarCodeType.QRCode,            // QRコードの種類
            Data = input,                         // エンコードするメインデータ
            Data2D = input,                       // 2次元バーコード用に必要(通常は Data と同じ)
            QRCodeDataMode = QRCodeDataMode.Byte, // バイトモード(多言語コンテンツに対応)
            QRCodeECL = QRCodeECL.M,              // 中レベルの誤り訂正(15%)
            X = 3,                                // モジュールサイズ(画像の寸法に影響)
            ShowText = false,                     // デフォルトのバーコードテキストを非表示
            ShowBottomText = true,                // カスタムの下部テキストを表示
            BottomText = input                    // QRコードの下に表示するテキスト
        };

        var generator = new BarCodeGenerator(settings);
        using var ms = new MemoryStream();
        var qrImage = generator.GenerateImage();
        qrImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return Convert.ToBase64String(ms.ToArray());
    }
}

ポイント:

  • BarcodeSettings でQRコードの設定(内容、誤り訂正レベル、表示文字など)を定義
  • GenerateImage() でQRコード画像を生成
  • Base64文字列に変換することで、ファイル保存せずにHTML上に直接表示が可能

ステップ2:QRコード表示用のRazorページを作成

以下は、Index.cshtml のマークアップです。入力フォーム、QRコードの表示、画像のダウンロードリンクを含みます。

@page
@model IndexModel
@{
    ViewData["Title"] = "QRコードジェネレーター";
}

<h2>QRコードジェネレーター</h2>

<form method="post">
    <label for="InputData">テキストまたはURLを入力してください:</label>
    <input type="text" id="InputData" name="InputData" style="width:300px;" required />
    <button type="submit">QRコードを生成</button>
</form>

@if (!string.IsNullOrEmpty(Model.QrCodeBase64))
{
    <div style="margin-top:20px">
        <img src="data:image/png;base64,@Model.QrCodeBase64" alt="QRコード" />
        <br />
        <a href="data:image/png;base64,@Model.QrCodeBase64" download="qrcode.png"
           style="
              display: inline-block;
              margin-top: 10px;
              padding: 8px 16px;
              background-color: #0078D7;
              color: white;
              text-decoration: none;
              border-radius: 4px;
              font-weight: 600;
              cursor: pointer;
           ">
           QRコードをダウンロード
        </a>
    </div>
}

QRコードは Base64 形式の data: URI を使ってブラウザに直接表示され、ダウンロードも可能です。

実行例は以下の通りです:

ASP.NET Core Razor Pageで生成されたQRコード

QRコードのスキャン機能が必要な場合は、C#でQRコードを読み取る方法をご参照ください。

3. QRコードの出力をカスタマイズする

BarcodeSettings クラスを使って、QRコードの見た目や動作を柔軟に調整できます:

プロパティ 機能説明
QRCodeDataMode テキストのエンコードモード QRCodeDataMode.Byte
QRCodeECL 誤り訂正レベル QRCodeECL.H
X モジュールのサイズ(解像度) settings.X = 6
ImageWidth/Height 画像の幅・高さを指定 settings.ImageWidth = 300
ForeColor 色を変更 settings.ForeColor = Color.Blue
ShowText バーコードの文字を表示/非表示 settings.ShowText = false
BottomText カスタムテキストを下部に表示 settings.BottomText = "スキャン"
ShowBottomText 下部テキストの表示切り替え settings.ShowBottomText = true
QRCodeLogoImage ロゴ画像を中央に挿入 settings.QRCodeLogoImage = Image.FromFile("logo.png")

詳細な仕様については BarcodeSettings APIドキュメント をご覧ください。

4. MVC・Web API・Web Formsへの応用

このQRコード生成ロジックは、Razor Pages以外のASP.NETプロジェクトにも簡単に応用できます。

MVCの場合:

コントローラーに以下のようなアクションを追加します:

public class QrController : Controller
{
    public ActionResult Generate(string data)
    {
        var settings = new BarcodeSettings
        {
            Type = BarCodeType.QRCode,
            Data = data,
            QRCodeDataMode = QRCodeDataMode.Byte,
            QRCodeECL = QRCodeECL.M,
            X = 5
        };

        var generator = new BarCodeGenerator(settings);
        using var ms = new MemoryStream();
        generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return File(ms.ToArray(), "image/png");
    }
}

Web APIの場合:

以下のように GET エンドポイントを作成できます:

[ApiController]
[Route("api/[controller]")]
public class QrApiController : ControllerBase
{
    [HttpGet("generate")]
    public IActionResult GetQr(string data)
    {
        var settings = new BarcodeSettings
        {
            Type = BarCodeType.QRCode,
            Data = data
        };

        var generator = new BarCodeGenerator(settings);
        using var ms = new MemoryStream();
        generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return File(ms.ToArray(), "image/png");
    }
}

React や Vue などのフロントエンドからAPIとして呼び出すのに最適です。

Web Formsの場合:

コードビハインドで以下のように処理可能です:

protected void btnGenerate_Click(object sender, EventArgs e)
{
    var settings = new BarcodeSettings
    {
        Type = BarCodeType.QRCode,
        Data = txtInput.Text
    };

    var generator = new BarCodeGenerator(settings);
    using var ms = new MemoryStream();
    generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    imgQR.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
}

QRコード画像を <asp:Image> コントロールに埋め込んで表示します。

5. まとめ

Spire.Barcode for .NET を使えば、Razor Pages、MVC、Web API、Web Forms など、すべての ASP.NET プロジェクトにおいて、QRコードの生成とカスタマイズが簡単に実装できます。

画像をBase64文字列で扱うことで、ファイル保存や管理が不要になり、展開や保守もシンプルになります。 認証システム、チケット発行、連絡先共有といったさまざまな用途に対応できる、信頼性の高いアプローチです。

よくある質問(FAQ)

Q: 日本語やアラビア語などの文字に対応していますか? A: はい。QRCodeDataMode.Byte を使用すればUnicode対応可能です。

Q: QRコードのサイズや色は変更できますか? A: 可能です。XForeColorImageWidth などのプロパティを使って調整できます。

Q: このソリューションは完全にオフラインで動作しますか? A: はい。外部APIへの接続なしでローカルで完結します。

Q: Web API経由でQRコード生成機能を提供できますか? A: はい。ASP.NET Web API を使って他のアプリに画像を提供できます。

Read 36 times