Você está procurando uma maneira de ler códigos de barras ou códigos QR de imagens programaticamente? Se você é um desenvolvedor e precisa criar seu próprio aplicativo de leitor de código de barras? Você veio ao lugar certo. Os códigos de barras são cruciais para o rastreamento preciso do estoque e entrega de produtos desde a fabricação até o ponto de venda. Podemos facilmente detectar, reconhecer e ler diferentes tipos de códigos de barras e códigos QR em aplicativos .NET. Neste artigo, mostraremos como ler um código de barras de uma imagem em C# seguindo apenas algumas etapas simples. Você pode usar este artigo como um guia passo a passo para desenvolver aplicativos de leitor de código de barras ou scanner.
Em primeiro lugar, vamos dar uma olhada na API C# Barcode Reader para ler os códigos de barras disponíveis na imagem de entrada. A seguir, vamos percorrer as etapas de como detectar, reconhecer e extrair dados de código de barras da imagem. Você encontrará etapas detalhadas e trechos de código. Por fim, forneceremos links úteis para aprimoramentos adicionais. Então vamos começar!
Os seguintes tópicos serão abordados neste artigo:
- API C# para ler código de barras da imagem
- Etapas para ler o código de barras de uma imagem
- Leia o código de barras do bitmap
- Leia o código de barras da imagem usando o fluxo
- Como ler o código de barras de um tipo específico
- Leia códigos de barras de vários tipos de uma imagem
- Detecte e leia conjuntos predefinidos de simbologias
- Detecte e leia vários códigos de barras de uma imagem
- Obtenha as coordenadas X e Y do código de barras
- Leia o código de barras da região específica da imagem
- Leia o código de barras de várias regiões da imagem
API C# para ler o código de barras da imagem
Para ler um código de barras de uma imagem, usaremos a API Aspose.BarCode for .NET. A API permite gerar, digitalizar e ler uma ampla variedade de simbologias de código de barras. Ele permite a renderização de imagens de código de barras nos formatos JPEG, TIFF, PNG, BMP e GIF.
A API fornece a classe BarCodeReader que permite o reconhecimento de mais de 60 tipos diferentes de códigos de barras de determinadas imagens. A primeira etapa na detecção de códigos de barras é especificar a origem de uma imagem com códigos de barras. Isso pode ser um arquivo, um objeto de bitmap ou um fluxo. É então necessário especificar as simbologias alvo dentro do parâmetro DecodeType. Podemos examinar todos os diferentes tipos de simbologias compatíveis especificando DecodeType.AllSupportedTypes. O método ReadBarCodes() desta classe retorna um array de códigos de barras reconhecidos. A classe BarCodeResult da API armazena os dados de código de barras reconhecidos, como tipo de código de barras, texto do código, região e outros parâmetros.
A API também permite especificar as regiões de uma imagem que o leitor de código de barras deve ler. Isso pode ser feito usando um objeto .NET Rectangle e permite evitar a necessidade de encontrar códigos de barras em áreas da imagem que não contêm códigos de barras por padrão.
Por favor, baixe a DLL da API ou instale-a usando NuGet.
PM> Install-Package Aspose.BarCode
Ler código de barras de uma imagem usando C#
Podemos ler facilmente um código de barras de uma imagem seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Chame o método readBarCodes() e obtenha os resultados de reconhecimento no objeto da classe BarCodeResult.
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras de uma imagem em C#.
// Este exemplo de código demonstra como ler o código de barras de um arquivo de imagem.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Sample.png");
// Leia o código de barras e mostre os resultados
foreach(BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leia o código de barras do bitmap em C#
Podemos ler facilmente um código de barras de uma imagem seguindo as etapas abaixo:
- Primeiramente, carregue uma imagem usando a classe Bitmap.
- Em seguida, crie uma instância da classe BarCodeReader com o objeto Bitmap.
- Chame o método ReadBarCodes() e obtenha os resultados do reconhecimento no objeto da classe BarCodeResult.
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras de bitmap em C#.
// Este exemplo de código demonstra como ler o código de barras do bitmap.
// Carregar imagem em Bitmap
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\Code128.jpg");
// Inicializar leitor de código de barras
BarCodeReader reader = new BarCodeReader(bmp);
// Leia todos os códigos de barras na área fornecida
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leia o código de barras da imagem usando o Stream em C#
Também podemos carregar a imagem do código de barras usando um fluxo de arquivo e ler um código de barras seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe FileStream.
- Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
- Chame o método ReadBarCodes() e obtenha os resultados do reconhecimento no objeto da classe BarCodeResult.
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras da imagem usando Stream em C#.
// Este exemplo de código demonstra como ler o código de barras de uma imagem usando o fluxo de arquivo.
// Carregar imagem
Stream stream = new FileStream("C:\\Files\\BarCode\\MultipleBarcodes.jpeg", FileMode.Open, FileAccess.Read);
// Inicializar leitor de código de barras
BarCodeReader reader = new BarCodeReader(stream);
// Leia todos os códigos de barras na área fornecida
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leia o código de barras do tipo específico da imagem em C#
Recomenda-se selecionar simbologias de código de barras de destino que serão consideradas para reconhecimento, a fim de minimizar o tempo necessário para a conclusão do reconhecimento e evitar tentativas de reconhecer códigos de barras desatualizados.
Podemos especificar o tipo de código de barras de destino e ler o código de barras de uma imagem seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Em seguida, defina um tipo de decodificação de código de barras, como Code39Standard.
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras de um tipo específico de uma imagem usando C#.
// Este exemplo de código demonstra como ler o código de barras de um tipo de decodificação específico de uma imagem.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.Code39Standard);
// Ler código de barras do tipo Code39Extended
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leia o código de barras de vários tipos da imagem em C#
Também podemos especificar vários tipos de código de barras seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Em seguida, defina os tipos de decodificação de um código de barras usando o método SetBarCodeReadType().
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler códigos de barras de vários tipos de uma imagem usando C#.
// Este exemplo de código demonstra como ler o código de barras de vários tipos de decodificação de uma imagem.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png");
reader.SetBarCodeReadType(DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
// Ler códigos de barras
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Também podemos especificar vários tipos de decodificação no construtor da classe BarCodeReader conforme mostrado abaixo:
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
Leia o conjunto predefinido de tipos de código de barras da imagem em C#
Podemos ler um conjunto predefinido de simbologias para reconhecimento definido na classe DecodeTypes. Podemos definir qualquer um dos seguintes conjuntos predefinidos:
- AllSupportedTypes - todos os tipos de código de barras suportados
- Types1D - todas as simbologias 1D suportadas
- Types2D - todas as simbologias 2D suportadas
- PostalTypes - todas as simbologias postais suportadas que são usadas principalmente pelos serviços postais
- MostCommonTypes - um conjunto de padrões de código de barras mais amplamente usados definidos
Podemos especificar um conjunto predefinido seguindo as etapas abaixo:
- Em primeiro lugar, em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Em seguida, defina um tipo de decodificação de código de barras no construtor BarCodeReader ou no método SetBarCodeReadType, como DecodeType.Types2D.
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras usando um conjunto predefinido de simbologias em C#.
// Este exemplo de código demonstra como ler um código de barras usando um conjunto predefinido de simbologias.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.Types1D);
// Leia o código de barras e mostre os resultados
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Leia vários códigos de barras da imagem em C#
Também podemos ler todos os códigos de barras disponíveis de uma imagem seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Em seguida, defina um tipo de decodificação de código de barras como ALLSUPPORTEDTYPES.
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler vários códigos de barras de uma imagem usando C#.
// Este exemplo de código demonstra como ler vários códigos de barras de uma imagem.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.AllSupportedTypes);
// Leia todos os tipos de código de barras disponíveis na imagem de entrada
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Obtenha as coordenadas X e Y do código de barras usando C#
Podemos ler as coordenadas X e Y do código de barras detectado a partir de uma imagem seguindo as etapas abaixo:
- Em primeiro lugar, carregue uma imagem usando a classe BarCodeReader.
- Em seguida, obtenha os resultados de reconhecimento no objeto de classe BarCodeResult usando o método ReadBarCodes().
- Em seguida, percorra os resultados e verifique se a região não é nula.
- Depois disso, obtenha o array Points delimitando a região do código de barras usando o método Points.
- Finalmente, mostre os pontos X e Y do código de barras.
O exemplo de código a seguir mostra como obter os pontos de coordenadas X e Y de um código de barras de uma imagem usando C#.
// Este exemplo de código demonstra como ler o ponto da região X e Y dos códigos de barras de uma imagem.
// Inicializar o leitor de código de barras
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.AllSupportedTypes);
// Ler código de barras
foreach (BarCodeResult result in reader.ReadBarCodes())
{
if (result.Region != null)
{
// Exibe as coordenadas x e y de todos os códigos de barras detectados
Point[] point = result.Region.Points;
Console.Out.WriteLine("Top left coordinates: X = " + point[0].X + ", Y = " + point[0].Y);
Console.Out.WriteLine("Bottom left coordinates: X = " + point[1].X + ", Y = " + point[1].Y);
Console.Out.WriteLine("Bottom right coordinates: X = " + point[2].X + ", Y = " + point[2].Y);
Console.Out.WriteLine("Top right coordinates: X = " + point[3].X + ", Y = " + point[3].Y);
}
}
Leia o código de barras da região específica da imagem em C#
Podemos ler um código de barras de uma região específica ou de uma área de uma imagem seguindo os passos abaixo:
- Em primeiro lugar, leia os dados do buffer de um arquivo de imagem usando o método Bitmap.
- Em seguida, crie uma instância da classe BarCodeReader. Leva uma imagem, uma área de retângulo e um tipo de decodificação como argumentos.
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras de uma região específica de uma imagem usando C#.
// Este exemplo de código demonstra como ler o código de barras de uma região específica de uma imagem.
// Carregar imagem
Bitmap img = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.jpeg");
// Crie uma instância da classe BarCodeReader
// e especifique uma área para procurar o código de barras
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 400, 200));
// Leia todos os códigos de barras na área fornecida
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
Leia o código de barras de várias regiões da imagem em C#
Também podemos ler o código de barras de várias regiões de uma imagem seguindo as etapas abaixo:
- Primeiramente, carregue uma imagem usando a classe Bitmap.
- Em seguida, defina retângulos usando a classe Rectangle.
- Em seguida, crie uma instância da classe BarCodeReader.
- Enquanto isso, chame SetBarCodeImage() com um objeto de imagem e retângulos como argumentos.
- Opcionalmente, defina os tipos de leitura de código de barras usando o método SetBarCodeReadType().
- Depois disso, obtenha os resultados do reconhecimento no objeto da classe BarCodeResult usando o método ReadBarCodes().
- Por fim, percorra os resultados e mostre o tipo e o texto do código de barras.
O exemplo de código a seguir mostra como ler um código de barras de várias regiões de uma imagem usando C#.
// Este exemplo de código demonstra como ler o código de barras de uma região específica de uma imagem.
// Carregar imagem em Bitmap
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.png");
// Retângulo de um código de barras 2D na imagem de origem
Rectangle rect2D = new Rectangle(0, 0, 400, 200);
// Retângulo do código de barras Code128 na imagem de origem
Rectangle rectCode128 = new Rectangle(450, 100, 600, 180);
// Inicializar leitor de código de barras
BarCodeReader reader = new BarCodeReader();
reader.SetBarCodeImage(bmp, new Rectangle[] { rect2D, rectCode128 });
reader.SetBarCodeReadType(DecodeType.AllSupportedTypes);
// Leia todos os códigos de barras na área fornecida
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
Obtenha uma licença gratuita
Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.
Conclusão
Neste artigo, aprendemos como:
- Carregar arquivo de imagem de código de barras;
- Leia imagens como bitmap ou usando fluxo de arquivo;
- reconhecer códigos de barras de diferentes tipos a partir de uma imagem;
- ler as coordenadas do código de barras;
- detectar e ler vários códigos de barras de uma única imagem;
- detectar e ler códigos de barras de uma área específica de uma imagem.
Além de ler o código de barras de uma imagem em C#, você pode aprender mais sobre Aspose.BarCode para API .NET usando documentação. Em caso de ambiguidade, sinta-se à vontade para nos contatar em nosso fórum de suporte gratuito.