Como Ler Código QR de Imagens em C
IronQR permite que os desenvolvedores leiam códigos QR de vários formatos de imagem em C# carregando imagens com IronDrawing, criando um objeto QrImageInput, e usando o método BarcodeReader.Read para decodificar os dados do QR de forma eficiente. Seja para escanear código QR de fotos, capturas de câmera ou arquivos digitais, o IronQR oferece reconhecimento preciso com suporte a múltiplos formatos.
Início rápido: Ler código QR de imagem em C#
Como ler um código QR em imagens
- Baixe a biblioteca C# para ler códigos QR de imagens.
- Importe os dados da imagem usando o IronDrawing.
- Create a `QrImageInput` object from the image data
- Pass the object to the ``Read`` method
- Percorra cada código QR detectado e revise suas informações.
Como ler código QR em diferentes formatos de imagem
O IronQR oferece suporte integrado para leitura de códigos QR em diversos formatos de imagem. Essa funcionalidade utiliza modelos avançados de aprendizado de máquina para garantir a decodificação precisa em diferentes tipos de mídia. Os formatos suportados incluem:
- Grupo Conjunto de Especialistas em Fotografia (JPEG)
- Gráficos de Rede Portáteis (PNG)
- Formato de Intercâmbio de Gráficos (GIF)
- Formato de arquivo de imagem com tags (TIFF)
- Arquivo de imagem bitmap (BMP)
- WBMP
- WebP
- Ícone (ico)
- WMF
- RawFormat (bruto)
O suporte a esse formato é possível graças à biblioteca de código aberto IronDrawing , que realiza o processamento de imagens de forma eficiente. Você pode processar códigos QR de câmeras digitais, scanners, dispositivos móveis ou downloads da web sem conversão de formato.
-
Instale IronQR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronQR -
Copie e execute este trecho de código.
// Import necessary IronQR and IronDrawing namespaces using IronSoftware.Drawing; using IronBarcode; public class QRCodeReader { public static void Main() { // Load an image from a file path using (var inputImage = Image.FromFile("path/to/your/image/file.webp")) { // Create a QrImageInput object from the image var qrImageInput = new QrImageInput(inputImage); // Decode the Código QR from the image var result = BarcodeReader.Read(qrImageInput); // Iterate through each detected Código QR and display its information foreach (var barcodeResult in result.Barcodes) { Console.WriteLine($"QR Code Data: {barcodeResult.Value}"); } } } } -
Implante para testar em seu ambiente de produção.
Comece a usar IronQR em seu projeto hoje com uma avaliação gratuita
Nota: Substitua "caminho/para/seu/arquivo/de/imagem.webp" pelo caminho real do seu arquivo de imagem do código QR.
Ficou curioso para saber o valor do código QR nas imagens de exemplo? Experimente usando o trecho de código!
Por que o IronQR suporta vários formatos de imagem?
Ler código QR significa escanear e decodificar as informações armazenadas dentro do código. Normalmente, isso é feito usando uma câmera ou um scanner em conjunto com um software capaz de interpretar os dados do código QR. As informações contidas em um código QR podem ser texto, URLs, detalhes de contato ou outros tipos de dados.
O suporte a múltiplos formatos do IronQR é essencial para aplicações do mundo real, onde os códigos QR aparecem em diversos contextos — desde materiais de marketing e embalagens de produtos até documentos digitais e conteúdo da web. Ao oferecer suporte a diversos formatos, o IronQR garante que os desenvolvedores possam criar aplicativos robustos sem se preocupar com a compatibilidade de formatos de imagem. Saiba mais sobre os recursos de leitura do IronQR para entender como essa flexibilidade aprimora seu fluxo de trabalho de desenvolvimento.
Quando devo usar cada formato de imagem?
Diferentes formatos de imagem servem a propósitos diferentes no processamento de códigos QR:
- PNG : Ideal para códigos QR que exigem transparência ou quando a qualidade da imagem é fundamental. A compressão sem perdas do PNG garante que os padrões do código QR permaneçam nítidos e legíveis.
- JPEG : Ideal para fotografias que contenham códigos QR ou quando o tamanho do arquivo for uma preocupação. Use configurações de qualidade mais altas (80% ou mais) para evitar que artefatos de compressão afetem a legibilidade.
- TIFF : Ideal para fins de arquivamento ou para trabalhar com documentos digitalizados em ambientes corporativos.
- WebP : Formato moderno que oferece excelente compressão com retenção de qualidade, ideal para aplicações web.
Para obter os melhores resultados em qualquer formato, certifique-se de que suas imagens mantenham resolução suficiente (pelo menos 300 DPI para códigos QR impressos) e contraste adequado. Confira nossos exemplos avançados de leitura de QR Code para técnicas de otimização específicas para cada formato.
O que acontece se a qualidade da imagem for ruim?
O IronQR incorpora recursos de tolerância a falhas para lidar com imagens imperfeitas. Ao lidar com imagens de baixa qualidade, a biblioteca emprega diversas estratégias:
- Correção de erros : Os códigos QR incluem recursos de correção de erros (níveis L, M, Q e H), permitindo a recuperação de dados mesmo quando até 30% do código estiver danificado.
- Aprimoramento de Aprendizado de Máquina : Os modelos de aprendizado de máquina da IronQR detectam e compensam problemas comuns como desfoque, distorção e iluminação inadequada.
- Pré-processamento : O aprimoramento automático de imagem melhora o contraste e a nitidez antes das tentativas de decodificação.
Para cenários mais complexos, considere usar opções personalizadas de modo de leitura de QR Code para ajustar o processo de leitura:
// Example: Reading Código QRs with enhanced error correction
using IronBarcode;
public class EnhancedQRReader
{
public static void ReadPoorQualityImage()
{
// Configure reader with multiple attempts and error correction
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed, // More thorough scanning
ExpectMultipleBarcodes = true, // Check for multiple codes
ExpectBarcodeTypes = BarcodeType.QRCode // Focus on Código QRs only
};
using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
{
var qrImageInput = new QrImageInput(inputImage);
var results = BarcodeReader.Read(qrImageInput, options);
foreach (var result in results.Barcodes)
{
Console.WriteLine($"Decoded: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
}
}
}
}
// Example: Reading Código QRs with enhanced error correction
using IronBarcode;
public class EnhancedQRReader
{
public static void ReadPoorQualityImage()
{
// Configure reader with multiple attempts and error correction
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed, // More thorough scanning
ExpectMultipleBarcodes = true, // Check for multiple codes
ExpectBarcodeTypes = BarcodeType.QRCode // Focus on Código QRs only
};
using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
{
var qrImageInput = new QrImageInput(inputImage);
var results = BarcodeReader.Read(qrImageInput, options);
foreach (var result in results.Barcodes)
{
Console.WriteLine($"Decoded: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
}
}
}
}
Imports IronBarcode
Public Class EnhancedQRReader
Public Shared Sub ReadPoorQualityImage()
' Configure reader with multiple attempts and error correction
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed, ' More thorough scanning
.ExpectMultipleBarcodes = True, ' Check for multiple codes
.ExpectBarcodeTypes = BarcodeType.QRCode ' Focus on Código QRs only
}
Using inputImage = Image.FromFile("blurry_qr_code.jpg")
Dim qrImageInput As New QrImageInput(inputImage)
Dim results = BarcodeReader.Read(qrImageInput, options)
For Each result In results.Barcodes
Console.WriteLine($"Decoded: {result.Value}")
Console.WriteLine($"Confidence: {result.Confidence}%")
Next
End Using
End Sub
End Class
Obtendo valores de um código QR
[//]: # (Este é um comentário que será ocultado. O valor já foi mencionado no exemplo acima. Ao definir isso novamente, assumirei um papel mais explicativo, porém breve.
A maioria das funções do IronQR retorna uma coleção para suportar múltiplas detecções. Como results é uma sequência de objetos, ela não possui uma propriedade Value em si. O código de exemplo seleciona especificamente o primeiro QrResult da coleção e recupera seu valor.
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-value.cs
using System;
using System.Collections.Generic;
using System.Linq;
using IronQr;
using System.Drawing;
// Import image
var inputImage = Image.FromFile("sample.jpg");
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}");
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronQr
Imports System.Drawing
' Import image
Dim inputImage As Image = Image.FromFile("sample.jpg")
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}")
Detecção da posição de um código QR em uma imagem
O IronQR vai além da simples decodificação, localizando com precisão a posição de um código QR dentro de uma imagem. Este posicionamento usa um sistema de coordenadas padrão onde PointF (0,0) representa o canto superior esquerdo da imagem. As coordenadas espaciais exatas dos cantos do código QR estão acessíveis através do array Points[].
No exemplo, as coordenadas dos quatro pontos do código QR detectado são recuperadas e impressas no console.
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-position.cs
using System;
using System.Collections.Generic;
using IronQr;
using System.Drawing;
using System.Linq;
// Import an image containing a QR code
var inputImage = Image.FromFile("urlQr.png");
// Load the asset into a QrImageInput object
var imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
var reader = new QrReader();
// Read the input and get all embedded QR codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// [TL, TR, BL, BR]
string[] labels = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" };
var points = results.First().Points;
for (int i = 0; i < points.Length; i++)
{
Console.WriteLine($"{labels[i]}: {points[i].X}, {points[i].Y}");
}
Imports System
Imports System.Collections.Generic
Imports IronQr
Imports System.Drawing
Imports System.Linq
' Import an image containing a QR code
Dim inputImage As Image = Image.FromFile("urlQr.png")
' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' [TL, TR, BL, BR]
Dim labels As String() = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" }
Dim points = results.First().Points
For i As Integer = 0 To points.Length - 1
Console.WriteLine($"{labels(i)}: {points(i).X}, {points(i).Y}")
Next
Insira o código QR
Saída
Observe que o sistema registrou as coordenadas espaciais exatas de cada canto do código QR no console.
Tipos de código QR suportados
São suportados vários tipos de códigos QR, tanto para criação quanto para leitura. O IronQR oferece suporte abrangente para diversos formatos de código QR, atendendo às variadas necessidades de aplicação. Saiba mais sobre os formatos de QR compatíveis em nossa documentação. Abaixo estão os tipos de código QR suportados:
- QRCode : O código QR padrão mais comumente usado atualmente. Ele pode armazenar até 7.089 caracteres numéricos ou 4.296 caracteres alfanuméricos, sendo adequado para URLs de sites, informações de contato e outras aplicações.
- MicroQRCode : Uma versão menor do código QR padrão, projetada para espaços limitados. Pode armazenar até 35 caracteres numéricos ou 21 caracteres alfanuméricos, ideal para embalagens pequenas ou etiquetas impressas minúsculas.
- RMQRCode : O códigoRMQR(RectangularMicro QRCode) é uma versão retangular compacta em vez de quadrada. Esta versão permite flexibilidade na proporção da tela, sendo útil para aplicações onde há espaço retangular disponível.
Como escolher o tipo certo de código QR?
A escolha do tipo de código QR apropriado depende do seu caso de uso específico e das suas restrições:
-
Código QR padrão : Escolha esta opção para aplicações de uso geral onde o espaço não é limitado e você precisa de capacidade máxima de dados. Ideal para URLs, credenciais de Wi-Fi, contatos de vCard ou informações detalhadas sobre produtos. Consulte nossos exemplos de geração de código QR para obter detalhes de implementação.
-
Micro QR Code : Ideal para trabalhar com superfícies pequenas, como componentes eletrônicos, etiquetas de joias ou dispositivos médicos. Apesar da capacidade limitada, é perfeito para números de série, URLs simples ou códigos de rastreamento básicos.
- Código RMQR : Selecione códigos retangulares quando o espaço disponível tiver restrições dimensionais específicas, como etiquetas estreitas em produtos cilíndricos ou espaços alongados nas bordas da embalagem.
Quais são as limitações de armazenamento de dados?
Compreender a capacidade de dados ajuda a otimizar a implementação do seu código QR:
| Tipo de código QR | Somente numérico | Alfanumérico | Binário | Kanji |
|---|---|---|---|---|
| QR padrão | 7.089 | 4.296 | 2.953 | 1.817 |
| Micro QR | 35 | 21 | 15 | 9 |
| RMQR | Variável | Variável | Variável | Variável |
Considere estes fatores ao planejar o armazenamento de dados:
- Utilize encurtadores de URL para links da web para maximizar o espaço disponível.
- Implementar compressão de dados para grandes conjuntos de dados
- Selecione níveis adequados de correção de erros (uma correção mais alta reduz a capacidade).
Para implementações avançadas, explore nosso guia de geração de códigos QR estilizados para equilibrar estética e capacidade de dados.
Quando devo usar códigos Micro ou RMQR?
Os códigos Micro eRMQRse destacam em cenários específicos:
Os microcódigos QR são perfeitos para:
- Placas de circuito eletrônico que requerem rastreamento de componentes
- Pequenos dispositivos médicos que necessitam de identificadores de pacientes ou medicamentos
- Autenticação de joias com espaço limitado para gravação
- Etiquetas de produtos em miniatura na fabricação
Os códigosRMQRsão mais adequados para:
- Etiquetas de envio estreitas em tubos ou canos
- Espaços alongados no corpo da caneta ou em outras ferramentas
- Materiais de marketing em formato de banner
- Integração em elementos de design retangulares existentes
Aqui está um exemplo prático de leitura de diferentes tipos de código QR:
using IronBarcode;
using IronSoftware.Drawing;
public class MultiTypeQRReader
{
public static void ReadVariousQRTypes()
{
// Configure reader to handle all Código QR types
var options = new BarcodeReaderOptions
{
ExpectBarcodeTypes = BarcodeType.QRCode |
BarcodeType.MicroQRCode |
BarcodeType.RectangularMicroQRCode
};
string[] imagePaths = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
};
foreach (var path in imagePaths)
{
using (var image = Image.FromFile(path))
{
var qrInput = new QrImageInput(image);
var results = BarcodeReader.Read(qrInput, options);
foreach (var qr in results.Barcodes)
{
Console.WriteLine($"Type: {qr.BarcodeType}");
Console.WriteLine($"Data: {qr.Value}");
Console.WriteLine($"Format: {qr.Format}");
Console.WriteLine("---");
}
}
}
}
}
using IronBarcode;
using IronSoftware.Drawing;
public class MultiTypeQRReader
{
public static void ReadVariousQRTypes()
{
// Configure reader to handle all Código QR types
var options = new BarcodeReaderOptions
{
ExpectBarcodeTypes = BarcodeType.QRCode |
BarcodeType.MicroQRCode |
BarcodeType.RectangularMicroQRCode
};
string[] imagePaths = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
};
foreach (var path in imagePaths)
{
using (var image = Image.FromFile(path))
{
var qrInput = new QrImageInput(image);
var results = BarcodeReader.Read(qrInput, options);
foreach (var qr in results.Barcodes)
{
Console.WriteLine($"Type: {qr.BarcodeType}");
Console.WriteLine($"Data: {qr.Value}");
Console.WriteLine($"Format: {qr.Format}");
Console.WriteLine("---");
}
}
}
}
}
Imports IronBarcode
Imports IronSoftware.Drawing
Public Class MultiTypeQRReader
Public Shared Sub ReadVariousQRTypes()
' Configure reader to handle all Código QR types
Dim options As New BarcodeReaderOptions With {
.ExpectBarcodeTypes = BarcodeType.QRCode Or
BarcodeType.MicroQRCode Or
BarcodeType.RectangularMicroQRCode
}
Dim imagePaths As String() = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
}
For Each path In imagePaths
Using image = Image.FromFile(path)
Dim qrInput As New QrImageInput(image)
Dim results = BarcodeReader.Read(qrInput, options)
For Each qr In results.Barcodes
Console.WriteLine($"Type: {qr.BarcodeType}")
Console.WriteLine($"Data: {qr.Value}")
Console.WriteLine($"Format: {qr.Format}")
Console.WriteLine("---")
Next
End Using
Next
End Sub
End Class
Para implantações em produção, consulte nosso guia de pacotes NuGet para garantir que você tenha o pacote correto para sua plataforma e verifique a referência da API para obter documentação completa sobre todos os métodos e propriedades disponíveis.
Perguntas frequentes
Quais formatos de imagem o IronQR suporta para leitura de códigos QR?
O IronQR suporta a leitura de códigos QR em diversos formatos de imagem, incluindo JPEG, PNG, GIF, TIFF, BMP, WBMP, WebP, ICO, WMF e RawFormat. Esse amplo suporte a formatos é possível graças ao IronDrawing, que permite processar códigos QR de várias fontes sem a necessidade de conversão de formato.
Como faço para ler um código QR de um arquivo de imagem em C#?
Para ler um código QR usando o IronQR, primeiro carregue sua imagem usando Image.FromFile(), crie um objeto QrImageInput a partir da imagem carregada e, em seguida, use BarcodeReader.Read() para decodificar os dados do QR. O método retorna resultados que você pode iterar para acessar as informações de cada código QR detectado.
Que tecnologia permite a leitura precisa de códigos QR em diferentes tipos de mídia?
O IronQR utiliza modelos avançados de aprendizado de máquina para garantir a decodificação precisa de códigos QR em diferentes tipos de mídia e formatos de imagem. Essa abordagem baseada em IA ajuda a manter alta precisão mesmo em condições de imagem desafiadoras.
Posso ler vários códigos QR a partir de uma única imagem?
Sim, o IronQR consegue detectar e ler vários códigos QR a partir de uma única imagem. O método BarcodeReader.Read retorna uma coleção de resultados, permitindo que você itere por cada código QR detectado usando um loop foreach para acessar os dados individuais de cada código.
Que tipos de dados podem ser armazenados em códigos QR que o IronQR lê?
O IronQR consegue decodificar vários tipos de dados armazenados em códigos QR, incluindo texto simples, URLs, informações de contato e outras formas de dados estruturados. As informações decodificadas podem ser acessadas através da propriedade Value de cada objeto BarcodeResult.

