Ir para o conteúdo do rodapé
USANDO O IRONQR

Como gerar códigos QR no ASP.NET Core

QR codes tornaram-se parte integrante da tecnologia moderna, oferecendo uma maneira conveniente de armazenar e transmitir informações. No desenvolvimento web, geradores de QR code como o que implementaremos usando o IronQR no ASP.NET Core, oferecem capacidades robustas para a criação dinâmica de QR codes. Geradores de QR code são inestimáveis para várias aplicações, como sistemas de emissão de bilhetes, autenticação, gestão de inventário e muito mais. Este artigo explora o processo de criação de QR codes no ASP.NET Core usando o IronQR, uma poderosa biblioteca projetada para esse propósito. O ASP.NET Core, sendo um framework versátil para construir aplicações web, oferece capacidades robustas para gerar QR codes. Neste artigo, vamos explorar o processo de criação de QR codes no ASP.NET Core usando o IronQR, uma poderosa biblioteca para geração de QR codes da Iron Software.

Como Gerar QR Codes no ASP.NET Core

  1. Crie o projeto ASP.Net usando o Visual Studio
  2. Instale a biblioteca IronQR do Gerenciador de Pacotes
  3. Gere o QR Code
  4. Gere o QR Code com Formatação

Entendendo o IronQR

IronQR é uma biblioteca de geração de QR code de alto desempenho para aplicações .NET. Oferece uma API simples e intuitiva para gerar QR codes com várias opções de personalização. IronQR suporta .NET Standard, tornando-o compatível com uma ampla gama de plataformas, incluindo ASP.NET Core. Com o IronQR, desenvolvedores podem gerar QR codes facilmente com diferentes tipos de dados, níveis de correção de erro, tamanhos e formatos.

Principais características

1. Leitura e Criação de QR Codes

IronQR permite que você gere e leia QR codes com facilidade. Seja você precisar criar códigos QR dinamicamente ou extrair informações de existentes, esta biblioteca tem o que você precisa.

2. API Amigável ao Usuário

A biblioteca fornece uma API amigável que permite aos desenvolvedores integrar funcionalidades de código de barras em seus projetos .NET rapidamente. Você pode começar a trabalhar com códigos QR em apenas alguns minutos.

3. Compatibilidade

IronQR suporta várias versões do .NET, incluindo:

  1. C#, VB.NET, F#
  2. .NET Core (8, 7, 6, 5, e 3.1+)
  3. .NET Standard (2.0+)
  4. .NET Framework (4.6.2+)

Abrange uma ampla gama de tipos de projetos, incluindo web (Blazor & WebForms), mobile (Xamarin & MAUI), desktop (WPF & MAUI) e aplicativos de console.

4. Modelo de Aprendizado de Máquina para Detecção de QR

IronQR usa um modelo avançado de Aprendizado de Máquina personalizado para detectar códigos QR. Isso garante reconhecimento de código preciso e confiável. Além disso, há uma opção de Modo Slim (não-ML) disponível para quem prefere uma abordagem mais leve.

5. Leitura de Códigos QR

Você pode ler códigos QR de vários formatos de imagem, incluindo:

  1. Imagens (jpg, png, svg, bmp)
  2. Imagens Multipágina (gif, tif, tiff)
  3. System.Drawing Bitmaps
  4. Imagens IronDrawing (AnyBitmap)

6. Escrita de Códigos QR

IronQR permite escrever códigos QR para diferentes tipos de documentos, como:

  1. Imagens (jpg, png, gif, tiff, bmp)
  2. System.Drawing Imagens
  3. Streams (MemoryStream, byte[])
  4. PDF (Carimbo em PDF Existente)

7. Estilização de Códigos QR

Personalize códigos QR Redimensionando, Ajustando margens e bordas, Recolorindo, Adicionando logotipos

8. Tratamento e Correção de Erros

IronQR fornece mensagens de erro detalhadas e suporta níveis de correção de erro QR personalizados.

Com este conhecimento, vamos começar com a aplicação para gerar código QR no ASP.NET Core.

Etapa 1: Crie um novo projeto ASP.NET usando Visual Studio

Antes de mergulharmos na geração de código QR, vamos configurar um novo projeto ASP.NET Core. Aqui estão as etapas para iniciar um novo projeto:

Comece criando um novo projeto no Visual Studio e selecionando o modelo de aplicativo ASP.Net Core Web App

Como Gerar Códigos QR em ASP .NET Core: Figura 1 - Selecione o modelo de aplicativo web ASP.NET CORE

Forneça Nome do Projeto e localização

Como Gerar Códigos QR em ASP .NET Core: Figura 2 - Nomeie o projeto e a localização onde deseja salvar

Selecione a versão do .NET desejada.

Como Gerar Códigos QR em ASP .NET Core: Figura 3 - Selecione a versão correta do .NET.

Clique no botão "criar" para gerar o código da aplicação a partir do modelo

Como Gerar Códigos QR em ASP .NET Core: Figura 4 - Clique no botão 'criar' para gerar o código do template

Etapa 2: Instale a biblioteca IronQR do Gerenciador de Pacotes

Instale a biblioteca IronQR do Gerenciador de Pacotes do Visual Studio conforme mostrado abaixo.

Como Gerar Códigos QR em ASP .NET Core: Figura 5 - Pesquise o IronOCR usando o Gerenciador de Pacotes do Visual Studio e instale

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

Como Gerar Códigos QR em ASP .NET Core: Figura 6 - Procure por IronOCR usando o Gerenciador de Pacotes NuGet

Etapa 3: Gere um Código QR

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

Criar Modelo QRCode

using System.ComponentModel.DataAnnotations;

namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText { get; set; }
    }
}
using System.ComponentModel.DataAnnotations;

namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText { get; set; }
    }
}
$vbLabelText   $csharpLabel

Criar um Controlador de Código QR

Para adicionar um novo controlador, clique com o botão direito na pasta do controlador e forneça um nome conforme mostrado abaixo.

Como Gerar Códigos QR em ASP .NET Core: Figura 7 - Adicione um novo controlador clicando na pasta e dando um nome a ele

Selecione o Controlador Vazio.

Como Gerar Códigos QR em ASP .NET Core: Figura 8 - Clique em Controlador Vazio no prompt

Forneça um nome.

Como Gerar Códigos QR em ASP .NET Core: Figura 9 - Nomeie o controlador

Em seguida, integre o seguinte código no controlador.

using GenerateQRCode.Models;
using IronSoftware.Drawing;
using IronQr;
using Microsoft.AspNetCore.Mvc;

namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        public IActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
using GenerateQRCode.Models;
using IronSoftware.Drawing;
using IronQr;
using Microsoft.AspNetCore.Mvc;

namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        public IActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
$vbLabelText   $csharpLabel

Explicação do código

Definição de Espaço de Nomes e Classe

O código começa com instruções using, que importam os espaços de nomes necessários. O namespace GenerateQRCode.Controllers contém a classe QrCodeController.

Construtor do Controlador

A classe QrCodeController tem um construtor que recebe um parâmetro IWebHostEnvironment. Este parâmetro é injetado pelo ASP.NET Core para lidar com tarefas relacionadas ao hospedagem web.

Métodos de Ação

  • Index(): Este método retorna uma visão (presumivelmente uma página HTML) quando acessado. Não parece estar diretamente relacionado à geração de códigos QR.
  • CreateQRCode(QRCodeModel generateQRCode): Este método é o coração da lógica de geração de código QR. Ele recebe um objeto QRCodeModel (presumivelmente contendo o texto do código QR) como parâmetro.

Dentro do método

  • Constrói um caminho para salvar a imagem do código QR gerado.
  • Cria um objeto de código QR usando QrWriter.Write(generateQRCode.QRCodeText).
  • Salva o código QR como uma imagem bitmap.
  • Constrói uma URL de imagem com base nos detalhes da solicitação web.
  • Define a propriedade ViewBag.QrCodeUri com a URL da imagem.
  • Se ocorrerem exceções durante este processo, elas são lançadas.

Geração de código QR

A geração real do código QR acontece dentro do método CreateQRCode. A chamada QrWriter.Write(generateQRCode.QRCodeText) cria um objeto de código QR com base no texto fornecido.

Salvamento de Imagem

O código QR gerado é salvo como uma imagem bitmap usando qrImage.SaveAs(filePath). O caminho do arquivo de imagem é construído com base no caminho da raiz web e no nome do arquivo desejado.

URL da Imagem

O imageUrl é construído usando o esquema, host e base do caminho da solicitação web. Esta URL aponta para o local onde a imagem do código QR gerada pode ser acessada. No geral, este controlador lida com a geração de códigos QR, salvando a imagem e fornecendo uma URL de imagem para uso posterior.

Adicionar Visualização ao Controlador

Para adicionar uma nova visão, clique com o botão direito do mouse no método de ação CreateQRCode na classe QrCodeController.

Como Gerar Códigos QR em ASP .NET Core: Figura 10 - Adicione uma nova visão na classe `QrCodeController`

Selecione "Adicionar Visualização" e depois "Visualização Razor". Clique no botão "Adicionar".

Como Gerar Códigos QR em ASP .NET Core: Figura 11 - Selecione a opção Adicionar Visão, depois Razor View, então Adicionar

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

Como Gerar Códigos QR em ASP .NET Core: Figura 12 - Selecione o template `Create` gerado anteriormente

Agora substitua o código abaixo na visualização

@model GenerateQRCode.Models.QRCodeModel

@{
    ViewData["Title"] = "Generate QR Code";
}

<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
@model GenerateQRCode.Models.QRCodeModel

@{
    ViewData["Title"] = "Generate QR Code";
}

<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
$vbLabelText   $csharpLabel

Faça o mesmo para o método de ação index também, para que, quando o aplicativo for iniciado, não ocorra um erro para a solicitação POST.

Agora no Program.cs, modifique o seguinte código para tornar a visã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

Esta ação modificará a rota padrão de HomeController para nosso QrCodeController.

Agora, compile e execute o projeto.

Como Gerar Códigos QR em ASP .NET Core: Figura 13 - Página inicial de exemplo do projeto

Digite qualquer texto na caixa de texto e clique em 'Criar'. Isso criará um novo código QR como mostrado abaixo.

Como Gerar Códigos QR em ASP .NET Core: Figura 14 - Insira qualquer texto e clique em criar para criar um novo código QR utilizando o IronQR

Adicionando Estilo ao código QR

QrStyleOptions são usados para estilizar a geração do código QR.

[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");

        // Create a QR Code object
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);

        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");

        // Create a QR Code object
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);

        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
$vbLabelText   $csharpLabel

Saída

Como Gerar Códigos QR em ASP .NET Core: Figura 15 - Modificando a cor do código QR programaticamente

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

Para desenvolvedores que querem testar o IronQR, uma licença de teste está disponível aqui. Esta chave de licença precisa ser colocada no arquivo appSettings.json. Fazendo isso, removerá a marca d'água mostrada nas imagens acima.

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

Conclusão

Neste artigo, exploramos como gerar códigos QR em ASP.NET Core usando o IronQR. Aproveitando o poder do IronQR, os desenvolvedores podem facilmente integrar a funcionalidade de geração de códigos QR em seus aplicativos web. Seja para bilhetagem, autenticação ou compartilhamento de informações, os códigos QR oferecem uma solução versátil para transmitir dados de forma eficiente. Com o IronQR, criar e personalizar códigos QR em ASP.NET Core nunca foi tão fácil. Comece a incorporar a geração de códigos QR em seus projetos ASP.NET Core e desbloqueie um mundo de possibilidades para codificação e compartilhamento dinâmico de dados.

Perguntas frequentes

Como posso gerar códigos QR em ASP.NET Core?

Para gerar códigos QR em ASP.NET Core, você pode usar a biblioteca IronQR. Comece criando um novo projeto ASP.NET no Visual Studio, instale o IronQR através do Gerenciador de Pacotes e implemente o código para gerar códigos QR usando sua API intuitiva.

Quais opções de personalização estão disponíveis para códigos QR no ASP.NET Core?

O IronQR oferece diversas opções de personalização para códigos QR no ASP.NET Core, incluindo redimensionamento, ajuste de margens, alteração de cores e adição de logotipos. Essas opções podem ser gerenciadas usando a classe QrStyleOptions .

Como funciona a correção de erros na geração de códigos QR com ASP.NET Core?

O IronQR permite gerenciar os níveis de correção de erros ao gerar códigos QR no ASP.NET Core. Isso garante que os códigos QR tenham o nível desejado de tolerância a erros, o que é essencial para uma leitura confiável.

É possível ler códigos QR de diferentes formatos de imagem no ASP.NET Core?

Sim, com o IronQR no ASP.NET Core, você pode ler códigos QR de vários formatos de imagem, como jpg, png, svg, bmp, gif, tif e tiff, bem como Bitmaps do System.Drawing e imagens do IronDrawing (AnyBitmap).

É possível testar o IronQR sem uma licença completa?

Sim, você pode obter uma licença de avaliação do IronQR no site da Iron Software. A versão de avaliação permite testar a biblioteca e remover marcas d'água dos códigos QR gerados durante a fase de testes, inserindo a licença no arquivo appSettings.json.

Quais são os benefícios de usar códigos QR em aplicações web?

Os códigos QR são benéficos para aplicações web, pois permitem o armazenamento e a transmissão eficientes de dados. São especialmente úteis em aplicações como sistemas de emissão de bilhetes, autenticação e gestão de inventário, proporcionando uma forma dinâmica de codificar e partilhar informações.

Como o aprendizado de máquina aprimora a detecção de códigos QR no ASP.NET Core?

O IronQR utiliza um modelo avançado de aprendizado de máquina personalizado para detecção de códigos QR, garantindo alta precisão e confiabilidade no reconhecimento do código. Para usuários que preferem uma solução mais leve, um Modo Slim sem aprendizado de máquina também está disponível.

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