0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ASP.NETでC#を使ってQRコードを生成する方法

Last updated at Posted at 2025-08-08

QRコードは、URL共有や決済、イベントチケットの確認、ログイン認証など、さまざまな場面で利用されています。
ASP.NET CoreのWebアプリ(Razor Page)において、Free Spire.Barcode for .NET を使えば、C#で簡単にQRコードを生成し、Webページ上に表示・ダウンロードさせることが可能です。

この記事では、以下の流れで実装方法を解説します。

  • ユーザーが文字列やURLを入力するフォームの作成
  • バックエンドでQRコード画像を生成し、Base64文字列に変換
  • 生成したQRコードをページに表示し、ダウンロードリンクを提供

本文では ASP.NET Core Web App(Razor Page) を例に説明します。
QRコード生成には無料の Free Spire.Barcode for .NET を利用します。
NuGetからインストール可能です:

dotnet add package FreeSpire.Barcode

1. フロントエンドページの作成(Index.cshtml)

まず、QRコード化したいテキストやURLを入力するフォームを用意します。
送信後、生成されたQRコード画像をBase64形式で表示し、画像のダウンロードも可能にします。

スタイルを調整したHTMLコード例:

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

<h2 style="font-family: Arial; color: #2c3e50;">QRコードジェネレーター</h2>

<form method="post" style="margin-bottom:20px; background-color:#f9f9f9; padding:15px; border-radius:5px; width: fit-content;">
    <label for="InputData" style="font-weight:bold;">テキストまたはURLを入力してください:</label><br />
    <input type="text" id="InputData" name="InputData" style="width:300px; padding:5px; margin:5px 0;" required />
    <button type="submit" style="padding:5px 15px; background-color:#3498db; color:white; border:none; border-radius:3px; cursor:pointer;">
        QRコードを生成
    </button>
</form>

@if (!string.IsNullOrEmpty(Model.QrCodeBase64))
{
    <div style="margin-top:20px; border:1px solid #ddd; padding:10px; display:inline-block; border-radius:5px;">
        <img src="data:image/png;base64,@Model.QrCodeBase64" alt="QRコード" style="display:block; margin-bottom:10px;" />
        <a href="data:image/png;base64,@Model.QrCodeBase64" download="qrcode.png" 
           style="background-color:#2ecc71; color:white; padding:5px 10px; border-radius:3px; text-decoration:none;">
            QRコードをダウンロード
        </a>
    </div>
}

ポイント:

  • フォームはPOSTメソッドで送信し、入力必須を設定しています。
  • QRコード画像はBase64文字列としてインライン表示し、別途画像ファイルの保存は不要です。
  • 「QRコードをダウンロード」リンクは、画像をPNGファイルとして保存できるようになっています。

2. バックエンドのQRコード生成処理(Index.cshtml.cs)

バックエンドでは、Spire.BarcodeBarcodeSettingsBarCodeGenerator を用いてQRコードを生成します。
生成した画像をメモリ上でPNG形式に保存し、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,                         // QRコードに埋め込むデータ
            Data2D = input,                       // 2Dコード用のデータ(通常はDataと同じ)
            QRCodeDataMode = QRCodeDataMode.Byte, // バイトモード(多言語対応)
            QRCodeECL = QRCodeECL.M,              // 中レベル誤り訂正(約15%復元可能)
            X = 3,                                // モジュールサイズ(画像の大きさに影響)
            ShowText = false,                     // デフォルトのバーコード文字は非表示
            ShowBottomText = true,                // カスタムの底部テキストを表示
            BottomText = input                    // 底部に入力データを表示
        };

        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());
    }
}

技術的なポイント:

  • QRCodeDataMode.Byte により日本語など多バイト文字も正しくエンコード可能。
  • QRCodeECL.M(中レベルの誤り訂正)は、多少の破損でも復元できるので実用的。
  • BottomText で入力内容をQRコードの下に表示可能。

3. 実行結果イメージ

ユーザーがテキストやURLを入力し、「QRコードを生成」ボタンを押すと、QRコードがすぐにページ内に表示されます。
また、「QRコードをダウンロード」リンクを押せば、PNG画像として保存可能です。

例: https://www.sample.com/ を入力した場合の画面イメージ
2025-08-08_180630.png


まとめ

ASP.NET Core の Razor Page で Spire.Barcode for .NET を使用すれば、ユーザー入力から QR コードを簡単に生成し、画像を Base64 形式で Web 上に表示するとともにダウンロード機能も提供できるため、柔軟な QR コード生成機能をすぐに実装できます。これにより、業務システムの認証やイベント管理、URL の共有など、幅広い用途に活用可能です。

より高度なQRコード生成(ロゴ埋め込み、色指定、複数生成など)が必要な場合も、BarcodeSettings を拡張して対応できます。

詳しいドキュメントは Spire.Barcode for .NET公式サイト をご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?