Como Criar um Scanner de Código QR no Blazor

This article was translated from English: Does it need improvement?
Translated
View the article in English

Blazor Server é um framework web .NET que executa C# no servidor e envia atualizações de UI para o navegador por meio de uma conexão SignalR. IronQR se integra diretamente ao Blazor Server, permitindo a varredura de códigos QR do lado do servidor a partir de imagens carregadas no navegador sem qualquer JavaScript.

Neste guia passo a passo, construiremos uma página Blazor Server que aceita o upload de uma imagem e decodifica qualquer código QR embutido usando IronQR.

Pré-requisitos

  1. Visual Studio 2022 com o workload de ASP.NET e desenvolvimento web instalado
  2. Um projeto Blazor Server direcionado ao .NET 8 ou posterior

Instalar IronQR

Instale a biblioteca IronQR usando o Console do Gerenciador de Pacotes NuGet no Visual Studio. Navegue para Tools > NuGet Package Manager > Package Manager Console e execute:

Install-Package IronQR

Alternativamente, procure por IronQR em NuGet e instale a versão mais recente.

Layout do Componente Blazor

A interface do scanner usa o componente InputFile embutido do Blazor para seleção de arquivos nativa do navegador, um botão para acionar a digitalização e um parágrafo para exibir o resultado decodificado. Não é necessária interoperabilidade com JavaScript.

Adicione um novo componente Razor Scanner.razor com a seguinte marcação:

@page "/scanner"
@using IronQr
@using IronSoftware.Drawing

<h3>QR Code Scanner</h3>

<InputFile OnChange="OnFileSelected" accept="image/*" />

<br /><br />

<button @onclick="ScanQRCode" disabled="@(qrImageSrc == null)">Scan QR Code</button>

<p>Result: @scannedText</p>

Exemplo de Entrada

Use o código QR abaixo como imagem de teste. Salve-o em seu dispositivo, carregue-o via o seletor de arquivos no aplicativo, depois clique em Digitalizar Código QR. O valor decodificado deve ser exibido como https://ironsoftware.com.

Sample QR code encoding https://ironsoftware.com for testing the Blazor QR scanner

Código QR de exemplo — codifica `https://ironsoftware.com`

Digitalização de Código QR com IronQR

Quando um arquivo é selecionado, OnFileSelected transmite o upload do navegador para um arquivo temporário no servidor. Quando o botão de digitalização é clicado, ScanQRCode carrega o arquivo em um AnyBitmap, passa-o para QrReader.Read(), e escreve o primeiro valor decodificado em scannedText, que o Blazor renderiza automaticamente no componente.

Adicione o seguinte bloco @code a Scanner.razor:

:path=/static-assets/qr/content-code-examples/how-to/blazor-qr-code-scanner.cs
using IronQr;
using IronSoftware.Drawing;

private string? qrImageSrc;
private string scannedText = string.Empty;

private async Task OnFileSelected(InputFileChangeEventArgs e)
{
    var file = e.File;
    var tempPath = Path.Combine(Path.GetTempPath(), file.Name);
    await using var stream = file.OpenReadStream(maxAllowedSize: 10_000_000);
    await using var fs = File.Create(tempPath);
    await stream.CopyToAsync(fs);
    qrImageSrc = tempPath;
}

private async Task ScanQRCode()
{
    // Load the scanned QR code
    var inputBmp = AnyBitmap.FromFile(qrImageSrc!);
    var imageInput = new QrImageInput(inputBmp);
    var reader = new QrReader();

    // Read the scanned QR code
    var results = reader.Read(imageInput);

    // Check if a result was found
    var firstResult = results.FirstOrDefault();
    if (firstResult != null)
    {
        // Save the QR code value as a string
        scannedText = firstResult.Value;
    }
    else
    {
        scannedText = "No QR code found in the selected image.";
    }
}
$vbLabelText   $csharpLabel

InputFile.OpenReadStream transmite os bytes carregados diretamente para um arquivo temporário no lado do servidor. AnyBitmap.FromFile decodifica o formato da imagem, e QrReader.Read retorna um IEnumerable<QrResult> com uma entrada para cada código QR encontrado. FirstOrDefault lida com segurança imagens sem código QR sem lançar uma exceção.

Saída

Depois de selecionar uma imagem de código QR e clicar em Digitalizar Código QR, o valor decodificado é renderizado no parágrafo de resultado abaixo dos controles.

Blazor QR Code Scanner using IronQR — decoded result displayed on the page

Valor decodificado do código QR renderizado no componente Blazor

Baixar o Projeto

Clique aqui para baixar o projeto completo BlazorQrScanner.

Conclusão

IronQR se integra a um aplicativo Blazor Server sem JavaScript. InputFile fornece seleção de arquivos nativa do navegador, e QrReader.Read lida com a decodificação inteiramente no servidor. O mesmo padrão escala para escanear vários códigos QR por imagem, iterando sobre a coleção completa de resultados em vez de chamar FirstOrDefault.

Para mais informações sobre leitura de códigos QR e os modos de digitalização disponíveis, veja os guias Ler Códigos QR de Imagem e Ler Códigos QR com Modos de Digitalização.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 61,359 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronQR
executar um exemplo Veja seu URL se transformar em um código QR.