Ir para o conteúdo do rodapé
USANDO O IRONQR
Como ler um código QR em ASP.NET

Como ler um código QR em ASP.NET

Códigos QR se tornaram onipresentes em nosso mundo digital, frequentemente usados em publicidade, varejo, gerenciamento de eventos e mais. Para desenvolvedores que trabalham no framework ASP.NET, integrar capacidades de escaneamento de códigos QR em aplicativos web pode aprimorar a experiência e a funcionalidade do usuário. Este artigo explora o processo de implementação de um scanner de código QR em um aplicativo ASP.NET, abrangendo as ferramentas necessárias, bibliotecas e implementação passo a passo. Usaremos IronQR, uma poderosa biblioteca para geração de códigos QR da Iron Software para ler códigos QR.

Como Escanear Código QR no ASP.NET

  1. Crie um projeto ASP.NET usando o Visual Studio.
  2. Instale a biblioteca IronQR do Gerenciador de Pacotes.
  3. Carregue a Imagem QR e Leia o QR.
  4. Leia o Código QR Avançado.

Entendendo Códigos QR e Seus Casos de Uso

Códigos QR (Resposta Rápida) são códigos de barras bidimensionais que podem armazenar informações variando de URLs a detalhes de contato, normalmente escaneados usando smartphones ou dispositivos de escaneamento dedicados. Em aplicativos web, os códigos QR podem servir a vários propósitos, tais como:

  • Acesso rápido ao site: Direcionar usuários para um URL específico sem a necessidade de digitar.
  • Bilhetagem de eventos: Verificar códigos QR em ingressos para acesso a eventos.
  • Sistemas de pagamento: Facilitar pagamentos fáceis escaneando um código QR.
  • Informações do produto: Fornecer informações adicionais sobre produtos.

Apresentando IronQR

IronQR é uma poderosa biblioteca .NET projetada para a geração e escaneamento de códigos QR, oferecendo funcionalidade robusta com facilidade de uso em mente. Esta biblioteca versátil não apenas lida com códigos QR, mas também pode gerir outros tipos de códigos de barras, tornando-se uma escolha preferida para desenvolvedores que trabalham dentro do ecossistema .NET. Aqui, exploraremos como integrar a biblioteca IronQR em um aplicativo ASP.NET para facilitar o escaneamento de códigos QR.

Vantagens e Recursos Principais do IronQR

  1. Leitura de Códigos QR: IronQR pode ler códigos QR de vários formatos de imagem, incluindo jpg, png, svg, bmp, gif, tif, tiff e mais. Ele também suporta imagens multipágina e modelos personalizados de detecção de QR. Os formatos de dados de saída incluem texto, URLs, coordenadas e mais.

  2. Escrita de Códigos QR: Você pode gerar códigos QR e salvá-los como imagens (jpg, png, gif, tiff, bmp), fluxos, ou até mesmo estampá-los em PDFs existentes. Codifique dados como texto, URLs, bytes e números e gere códigos QR. Personalize o estilo do código QR redimensionando, ajustando margens, recolorindo e adicionando logotipos.

  3. Tratamento e Correção de Erros: IronQR fornece mensagens de erro detalhadas e correção de erros QR personalizada. Garante tolerância a falhas e suporta verificação de nulidade e checksums.

  4. Modelo Avançado de Aprendizado de Máquina: IronQR usa um modelo avançado de Aprendizado de Máquina para reconhecimento de código QR. Este modelo garante leitura precisa e confiável de códigos QR em várias plataformas, incluindo ambientes móveis, desktop e nuvem.

  5. Compatibilidade Multiplataforma: IronQR é projetado para C#, F# e VB.NET, rodando em várias versões .NET como .NET Core (8, 7, 6, 5 e 3.1+), .NET Standard (2.0+), e .NET Framework (4.6.2+).

  6. Ele suporta diferentes tipos de projetos, incluindo web (Blazor & WebForms), móvel (Xamarin & MAUI), desktop (WPF & MAUI) e aplicativos de console.

  7. Suporte Amplo a Códigos QR: IronQR se destaca no manuseio de uma ampla gama de códigos QR e outros tipos de códigos de barras. Quer você esteja lidando com códigos QR padrão, Micro QR, uma imagem de código de barras QR, ou até mesmo formatos específicos como Aztec ou Data Matrix, o IronQR cobre isso. O IronQR também suporta a funcionalidade de ler códigos de barras QR.

IronQR dos produtos de API .NET, que incluem várias ferramentas para documentos de escritório, edição de PDF, OCR e mais.

Passo 1: Crie um Novo Projeto ASP.NET Usando o Visual Studio

Comece criando um novo Projeto e selecionando o modelo MVC, conforme mostrado abaixo:

Como Escanear Código QR em ASP .NET: Figura 1 - Crie um novo projeto ASP.NET usando o Visual Studio

Em seguida, você deve fornecer um nome e localização para o projeto.

Como Escanear Código QR em ASP .NET: Figura 2 - Forneça o nome do projeto e a localização onde deseja salvar.

Selecione a versão do .NET.

Como Escanear Código QR em ASP .NET: Figura 3 - Selecione a versão do .NET que deseja usar.

Clicar no botão criar criará o seguinte código e projeto.

Como Escanear Código QR em ASP .NET: Figura 4 - Clique no botão de criar para que o Visual Studio forneça o modelo para o seu projeto

Passo 2: Instale a Biblioteca IronQR a partir do Gerenciador de Pacotes do Visual Studio

Instale a biblioteca IronQR a partir do gerenciador de pacotes do Visual Studio conforme mostrado abaixo:

Como Escanear Código QR em ASP .NET: Figura 5 - Pesquise por IronQR usando o Gerenciador de Pacotes do Visual Studio e instale-o

IronQR também pode ser instalado usando o Gerenciador de Pacotes NuGet.

Como Escanear Código QR em ASP .NET: Figura 6 - Pesquise por IronQR via o Gerenciador de Pacotes NuGet

Passo 3: Faça o Upload da Imagem QR e Leia a Imagem QR

Agora, vamos criar um aplicativo de código QR.

Criar QRCodeModel

// Import necessary namespaces
using System.ComponentModel.DataAnnotations;

namespace IronQRScannerAsp.Models
{
    public class QRCodeModel
    {
        // Property to hold the uploaded QR code image
        [Display(Name = "Select QR Image")]
        public IFormFile QRCodeImage { get; set; }
    }
}
// Import necessary namespaces
using System.ComponentModel.DataAnnotations;

namespace IronQRScannerAsp.Models
{
    public class QRCodeModel
    {
        // Property to hold the uploaded QR code image
        [Display(Name = "Select QR Image")]
        public IFormFile QRCodeImage { get; set; }
    }
}
$vbLabelText   $csharpLabel

Criar um Controlador de Código QR

Adicione um novo controlador, clicando com o botão direito na pasta do controlador e fornecendo um nome mostrado abaixo:

Como Escanear Código QR em ASP .NET: Figura 7 - Adicione um novo controlador clicando na pasta e dê um nome a ele

Selecione Controlador Vazio.

Como Escanear Código QR em ASP .NET: Figura 8 - Clique em Controlador Vazio no prompt

Forneça o nome do controlador.

Como Escanear Código QR em ASP .NET: Figura 9 - Nomeie o controlador

Agora adicione o seguinte código ao controlador.

// Import necessary namespaces
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

namespace IronQRScannerAsp.Controllers
{
    // Controller to handle QR code scanning functionalities
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        // Constructor for dependency injection of the hosting environment
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        // Displays the initial View
        public IActionResult Index()
        {
            ViewBag.QrCodeText = "Text";
            return View();
        }

        // Handles the POST request to scan a QR code
        [HttpPost]
        public IActionResult ScanQRCode(QRCodeModel qrImage)
        {
            string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            // Define the file path for saving the uploaded QR image
            string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
            using (var stream = System.IO.File.Create(filePath))
            {
                qrImage.QRCodeImage.CopyTo(stream); // Save uploaded image to server
            }

            // Open the asset to read a QR Code from
            var bitmap = AnyBitmap.FromFile(filePath);

            // Load the asset into QrImageInput
            QrImageInput imageInput = new QrImageInput(bitmap);

            // Create a QR Reader object
            QrReader reader = new QrReader();

            // Read the Input and get all embedded QR Codes
            IEnumerable<QrResult> results = reader.Read(imageInput);

            // Display scanned text and image on the view
            ViewBag.QrCodeText = results.First().Value;
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
            ViewBag.QrCodeUri = imageUrl;

            return View();
        }
    }
}
// Import necessary namespaces
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

namespace IronQRScannerAsp.Controllers
{
    // Controller to handle QR code scanning functionalities
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        // Constructor for dependency injection of the hosting environment
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        // Displays the initial View
        public IActionResult Index()
        {
            ViewBag.QrCodeText = "Text";
            return View();
        }

        // Handles the POST request to scan a QR code
        [HttpPost]
        public IActionResult ScanQRCode(QRCodeModel qrImage)
        {
            string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            // Define the file path for saving the uploaded QR image
            string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
            using (var stream = System.IO.File.Create(filePath))
            {
                qrImage.QRCodeImage.CopyTo(stream); // Save uploaded image to server
            }

            // Open the asset to read a QR Code from
            var bitmap = AnyBitmap.FromFile(filePath);

            // Load the asset into QrImageInput
            QrImageInput imageInput = new QrImageInput(bitmap);

            // Create a QR Reader object
            QrReader reader = new QrReader();

            // Read the Input and get all embedded QR Codes
            IEnumerable<QrResult> results = reader.Read(imageInput);

            // Display scanned text and image on the view
            ViewBag.QrCodeText = results.First().Value;
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
            ViewBag.QrCodeUri = imageUrl;

            return View();
        }
    }
}
$vbLabelText   $csharpLabel

Explicação do código

O trecho de código fornecido é para um controlador ASP.NET Core MVC chamado QrCodeController, projetado para lidar com funcionalidades de escaneamento de código QR usando a biblioteca IronQR. Aqui está uma breve descrição do que o código faz:

1. Salvando a Imagem do Código QR Carregada

Construção do Caminho

  • Ele constrói um caminho de arquivo dentro do diretório raiz da web especificamente para salvar imagens de código QR (diretório "ScanQRCode").
  • Ele verifica se este diretório existe e, se não, o cria para evitar erros de arquivo não encontrado ao salvar o arquivo.

Salvamento do Arquivo

  • Ele constrói o caminho completo do arquivo (filePath) onde a imagem do código QR carregada será salva ("ScanQRCode/qrcode.png"). Isso sobrescreve qualquer arquivo existente com o mesmo nome, efetivamente lidando com novas varreduras sem acumular arquivos.
  • Ele abre um fluxo de arquivo e copia o conteúdo da imagem carregada (qrImage.QRCodeImage, provavelmente um arquivo de formulário) para a localização especificada no servidor.

2. Decodificando o Código QR

Lendo o Arquivo de Imagem

  • Utiliza AnyBitmap.FromFile(filePath) para carregar o arquivo de imagem salvo em um formato adequado para o escaneamento de código QR. AnyBitmap provavelmente serve como uma classe auxiliar para converter arquivos de imagem em um objeto bitmap que o leitor de QR pode processar.

Inicializando o Leitor de QR

  • Envolve o bitmap carregado em um QrImageInput, especialmente projetado para ser uma entrada para o processo de leitura de código QR.
  • Instancia um QrReader, um componente da biblioteca IronQR configurado para detectar e decodificar códigos QR.

Escaneando o Código QR

  • Chama reader.Read(imageInput) para escanear a imagem em busca de códigos QR. Este método retorna um IEnumerable<QrResult>, onde cada QrResult contém dados de um código QR detectado na imagem.
  • Extrai o valor do primeiro resultado usando results.First().Value e armazena essa informação decodificada em ViewBag.QrCodeText. Isso assume que a imagem contém pelo menos um código QR e não trata de possíveis erros onde não são detectados códigos QR.

3. Preparando e Retornando a Resposta

Construção da URL da Imagem

  • Constrói uma URL (imageUrl) apontando para a imagem do código QR salva no servidor. Esta URL é construída usando o esquema do pedido HTTP atual, host e base de caminho, assegurando que esteja acessível para visualização dos usuários.
  • A URL construída é salva em ViewBag.QrCodeUri.

Retorno da Visualização

  • Retorna a mesma visualização (View()), que provavelmente exibe tanto a imagem do código QR quanto o texto decodificado para o usuário. O ViewBag é usado para passar o texto decodificado do código QR e a URL da imagem para a visualização para renderização.

Adicionar Visualização à Classe Controller

Adicione uma nova visualização, clique com o botão direito no método de ação CreateQRCode na classe QrCodeController.

Como Escanear Código QR em ASP .NET: Figura 10 - Adicione uma nova visualização na classe `QrCodeController`

Selecione a opção 'Adicionar Visualização' e, em seguida, selecione 'Visualização Razor'. Clique em 'Adicionar'.

Como Escanear Código QR em ASP .NET: Figura 11 - Selecione a opção Adicionar Visualização, depois Visualização Razor, e então Adicionar

Em seguida, selecione o template "Criar" e a classe Modelo gerada anteriormente.

Como Escanear Código QR em ASP .NET: Figura 12 - Selecione o modelo de Criação gerado anteriormente

Agora substitua o código na classe de visualização pelo mostrado abaixo.

@model IronQRScannerAsp.Models.QRCodeModel

@{
    ViewData["Title"] = "ScanQRCode";
}

<h1>ScanQRCode</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-14">
        <form asp-action="ScanQRCode" enctype="multipart/form-data">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label for="QRCodeImage">Select QR Image:</label>
                <input asp-for="QRCodeImage" class="form-control" type="file" />
            </div>
            <div class="form-group">
                <input type="submit" value="Upload" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>
<div>
    <h3>Scanned Text:</h3>
    <h4>@ViewBag.QrCodeText</h4>
    @if (ViewBag.QrCodeUri != null)
    {
        <img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
    }
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

Agora no Program.cs altere o seguinte código para tornar a visualização acima a rota padrão:

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}");
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}");
$vbLabelText   $csharpLabel

Isso altera a rota padrão de HomeController para o nosso Controlador QrCode.

Imagem de entrada com URL: https://ironsoftware.com/csharp/qr/.

Como Escanear Código QR em ASP .NET: Figura 13 - Exemplo de entrada de código QR

Saída

Como Escanear Código QR em ASP .NET: Figura 14 - Exemplo de Saída após seguir os passos acima

Na página, selecione uma imagem de código QR e clique em enviar para decodificar o código QR. Este aplicativo também pode ser modificado para ler a partir de um feed de vídeo e exibir resultados.

Passo 4: Ler Código QR Avançado

Para ler códigos QR avançados, IronQR fornece as seguintes configurações.

// Import necessary namespaces
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;

// Load an image file as a bitmap
var inputBmp = AnyBitmap.FromFile("QrImage.png");

// Use Auto => Machine Learning Scan
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);

// Use Machine Learning Scan - High Speed
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);

// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
// Import necessary namespaces
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;

// Load an image file as a bitmap
var inputBmp = AnyBitmap.FromFile("QrImage.png");

// Use Auto => Machine Learning Scan
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);

// Use Machine Learning Scan - High Speed
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);

// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
$vbLabelText   $csharpLabel

Ao aproveitar o mais recente em tecnologia ML, elevamos o leitor de código QR a novos patamares. O modelo ML sofisticado aprimora a precisão e a eficiência das aplicações na decodificação de códigos QR, mesmo em condições complexas. Quer lendo códigos QR de imagens paradas, fluxos de vídeo ou feeds de câmera ao vivo, a solução alimentada por ML entrega as informações necessárias de forma rápida e confiável. Essa inovação simplifica a recuperação de dados e aumenta a segurança ao identificar códigos QR genuínos e sinalizar possíveis ameaças. Com nossa tecnologia ML, você pode ter confiança de que suas capacidades de escaneamento de código QR estão na vanguarda, proporcionando aos seus usuários uma experiência tranquila e segura

Licença (Versão de teste disponível)

Os desenvolvedores podem obter uma licença de teste IronQR aqui. A Chave precisa ser colocada no appSettings.json.

{
  "IronQr.License.LicenseKey": "My Key"
}

Conclusão

Neste artigo, exploramos como escanear códigos QR no ASP.NET Core usando IronQR. Integrar IronQR em uma aplicação ASP.NET para escaneamento de código QR é um processo direto que melhora as capacidades das aplicações web, tornando-as mais interativas e amigáveis ao usuário. Os poderosos recursos do IronQR e sua facilidade de uso o tornam uma excelente escolha para desenvolvedores que buscam implementar funcionalidades relacionadas a código de barras.

Perguntas frequentes

Como posso implementar um leitor de código QR em uma aplicação ASP.NET?

Para implementar um leitor de código QR em uma aplicação ASP.NET, comece criando um novo projeto no Visual Studio, instale a biblioteca IronQR através do Gerenciador de Pacotes e adicione o código para lidar com a leitura do código QR utilizando os recursos robustos do IronQR.

Quais são os passos para configurar um QRCodeModel em ASP.NET?

Para configurar um QRCodeModel em ASP.NET, defina uma classe de modelo para lidar com os dados do código QR, use o IronQR para processar a entrada e certifique-se de que seu aplicativo ASP.NET possa gerenciar a leitura do código QR e a exibição dos resultados.

O IronQR consegue ler códigos QR de diferentes formatos de imagem?

Sim, o IronQR consegue ler códigos QR de vários formatos de imagem, incluindo jpg, png, svg, bmp, gif, tif, tiff e imagens com várias páginas, o que o torna versátil para diversas aplicações.

Como o IronQR utiliza aprendizado de máquina para leitura de códigos QR?

A IronQR utiliza modelos avançados de aprendizado de máquina para aprimorar a precisão da leitura de códigos QR, garantindo uma leitura confiável e precisa em diversos ambientes e plataformas.

Em quais plataformas posso usar o IronQR para leitura de códigos QR?

O IronQR oferece suporte a uma ampla gama de plataformas, incluindo aplicativos web (Blazor e WebForms), aplicativos móveis (Xamarin e MAUI), aplicativos desktop (WPF e MAUI) e aplicativos de console, compatíveis com C#, F# e VB.NET.

Como faço para lidar com o upload de arquivos para leitura de código QR em ASP.NET?

Em ASP.NET, gerencie o envio de arquivos para leitura de códigos QR configurando um controlador para receber os arquivos e, em seguida, usando o IronQR para processar e ler as imagens de código QR enviadas de forma eficiente.

É possível ler códigos QR de vídeos usando o IronQR?

Sim, o IronQR pode ser adaptado para ler códigos QR de vídeos, ampliando sua aplicação para ambientes dinâmicos onde o processamento de dados em tempo real é necessário.

Quais opções de licenciamento estão disponíveis para o IronQR?

A IronQR oferece licenças de avaliação que podem ser obtidas no site da Iron Software. Os desenvolvedores devem inserir a chave de licença no arquivo appSettings.json para ativar a versão de avaliação.

Quais são alguns dos benefícios de usar o IronQR para leitura de códigos QR em ASP.NET?

Utilizar o IronQR para leitura de códigos QR em ASP.NET oferece benefícios como fácil integração, suporte a diversos formatos de imagem, precisão aprimorada por aprendizado de máquina e compatibilidade entre plataformas.

Como posso personalizar a criação de códigos QR em ASP.NET usando o IronQR?

Para personalizar a criação de códigos QR em ASP.NET com o IronQR, utilize os recursos da biblioteca para modificar o tamanho, as cores e os dados incorporados do código QR, adaptando a saída aos requisitos específicos da aplicação.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me