Saltar al pie de página
USO DE IRONBARCODE

Lector de Código QR en C# (Tutorial Paso a Paso para Principiantes)

En el mundo digital de hoy, los códigos QR (Códigos de Respuesta Rápida) se han vuelto omnipresentes, conectando sin problemas los ámbitos físico y digital. Desde el marketing hasta la logística, las finanzas y la salud, los códigos QR juegan un papel fundamental en facilitar el intercambio eficiente de datos.

En este artículo, nos adentramos en el ámbito del desarrollo en C#, explorando cómo IronQR, una de las mejores bibliotecas de códigos QR en el mercado, permite a los desarrolladores aprovechar el poder del reconocimiento de códigos QR, decodificar datos sin esfuerzo e innovar en varios dominios.

IronQR de Iron Software se destaca como una robusta biblioteca lectora de códigos QR para .NET. El modelo avanzado de aprendizaje automático implementado por IronQR permite a sus aplicaciones decodificar códigos QR con una precisión y eficiencia insuperables, incluso en escenarios desafiantes.

Cómo leer códigos QR usando C# con IronQR

  1. Crea un proyecto de Visual Studio con una plantilla de Aplicación de Windows Forms para .NET.
  2. Instala IronQR desde el gestor de paquetes NuGet.
  3. Obtenga el código QR de la cámara como una imagen usando la biblioteca AForge.
  4. Lea Códigos QR usando IronQR.

IronQR se destaca como la biblioteca lectora de códigos QR en C# diseñada para escanear y generar imágenes de códigos QR dentro del marco .NET. A través de la utilización de tecnología de aprendizaje automático de vanguardia, IronQR ha llevado la lectura de códigos QR a niveles sin precedentes.

Ya sea que esté escaneando códigos QR de imágenes, videos o flujos de cámara en vivo, la solución potenciada por ML garantiza una recuperación de información rápida y confiable.

Este enfoque innovador no solo agiliza la extracción de datos, sino que también mejora la seguridad al discernir entre códigos QR auténticos y posibles amenazas. Con su API intuitiva, los desarrolladores pueden integrar sin problemas las capacidades de códigos QR en sus proyectos .NET en cuestión de minutos.

IronQR se integra sin fisuras con .NET Core (8, 7, 6, 5 y 3.1+), .NET Standard (2.0+) y .NET Framework (4.6.2+). La versión actual de .NET Core extiende su soporte a sistemas operativos clientes como Linux, Unix y macOS, junto con la compatibilidad para desarrollar aplicaciones móviles.

Requisitos previos

  1. Visual Studio: Asegúrate de tener Visual Studio o cualquier otro entorno de desarrollo .NET instalado.
  2. Cámara Compatible: Asegúrate de que la cámara esté conectada a tu dispositivo.
  3. Gestor de Paquetes NuGet: Verifica que puedes utilizar NuGet para gestionar paquetes en tu proyecto.

Paso 1: Cree un proyecto de Visual Studio con una plantilla de aplicación de Windows Forms .NET

Comencemos creando una aplicación de Formularios de Windows .NET para leer códigos de barras QR de flujos de video de cámara o archivos de imagen. Abra Visual Studio, seleccione Crear Nuevo Proyecto y luego seleccione la plantilla de Aplicación de Formularios de Windows .NET.

Configuración de Visual Studio

Haga clic en Siguiente y escriba el nombre del proyecto.

Nombrado del Proyecto

Seleccione las versiones deseadas de .NET y luego haga clic en el botón Crear.

Crear Proyecto

Paso 2: Instale IronQR desde el administrador de paquetes NuGet

IronQR se puede instalar utilizando el gestor de paquetes NuGet o el Gestor de Paquetes de Visual Studio.

Instalación de NuGet

A continuación se muestra cómo puede hacerlo usando Visual Studio.

Visual Studio NuGet

Paso 3: Obtenga el código QR de la cámara como imagen usando la biblioteca AForge

Para escanear códigos QR desde dispositivos de cámara, necesitamos instalar la biblioteca AForge.Video.DirectShow. Esto se puede hacer usando el administrador de paquetes de Visual Studio. Haga clic derecho en el Explorador de Soluciones y abra el Administrador de Paquetes.

Paso 1 de la instalación de AForge

Esta biblioteca también se puede instalar utilizando la consola de paquetes NuGet como se muestra a continuación. Haga clic en el botón Instalar para instalar la biblioteca.

Paso 2 de la instalación de AForge

Paso 4: Leer códigos QR con IronQR

El siguiente paso es crear un componente PictureBox en el Formulario, que es necesario para escanear la imagen del código QR desde el dispositivo de cámara conectado a la máquina.

Esto se puede hacer arrastrando y soltando desde el cuadro de herramientas. Este PictureBox es necesario para leer los datos del código QR desde el dispositivo de cámara.

Agregar PictureBox

Luego, arrastre y suelte un cuadro de texto para mostrar los códigos QR leídos.

Agregar TextBox

Agregue el siguiente código para leer códigos QR y decodificarlos utilizando IronQR.

using AForge.Video.DirectShow;
using AForge.Video;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using IronQR;

namespace ReadQR
{
    public partial class Form1 : Form
    {
        // Declare a video capture device
        private VideoCaptureDevice videoSource;

        public Form1()
        {
            InitializeComponent();
            this.Load += Form1_Load;
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Stop the video source when the form is closing
            if (videoSource != null && videoSource.IsRunning)
            {
                videoSource.SignalToStop();
                videoSource.WaitForStop();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Retrieve video input devices connected to the machine
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            if (videoDevices.Count > 0)
            {
                // Use the first available video device
                videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
                videoSource.NewFrame += VideoSource_NewFrame;
                videoSource.Start();
            }
            else
            {
                MessageBox.Show("No video devices found.");
                Close();
            }
        }

        private void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // Update the PictureBox with the new frame from the camera
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();

            var image = (Bitmap)eventArgs.Frame.Clone();

            // Set the license key for IronQR. Replace "YourKey" with your actual key
            License.LicenseKey = "YourKey";

            // Prepare the image for QR code reading
            QrImageInput imageInput = new QrImageInput(image);

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

            // Read QR codes from the image
            IEnumerable<QrResult> results = reader.Read(imageInput);

            // Display the first QR code result in a MessageBox
            if (results.Any())
            {
                MessageBox.Show(results.First().Value);
            }
        }
    }
}
using AForge.Video.DirectShow;
using AForge.Video;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using IronQR;

namespace ReadQR
{
    public partial class Form1 : Form
    {
        // Declare a video capture device
        private VideoCaptureDevice videoSource;

        public Form1()
        {
            InitializeComponent();
            this.Load += Form1_Load;
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Stop the video source when the form is closing
            if (videoSource != null && videoSource.IsRunning)
            {
                videoSource.SignalToStop();
                videoSource.WaitForStop();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Retrieve video input devices connected to the machine
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            if (videoDevices.Count > 0)
            {
                // Use the first available video device
                videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
                videoSource.NewFrame += VideoSource_NewFrame;
                videoSource.Start();
            }
            else
            {
                MessageBox.Show("No video devices found.");
                Close();
            }
        }

        private void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // Update the PictureBox with the new frame from the camera
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();

            var image = (Bitmap)eventArgs.Frame.Clone();

            // Set the license key for IronQR. Replace "YourKey" with your actual key
            License.LicenseKey = "YourKey";

            // Prepare the image for QR code reading
            QrImageInput imageInput = new QrImageInput(image);

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

            // Read QR codes from the image
            IEnumerable<QrResult> results = reader.Read(imageInput);

            // Display the first QR code result in a MessageBox
            if (results.Any())
            {
                MessageBox.Show(results.First().Value);
            }
        }
    }
}
Imports AForge.Video.DirectShow
Imports AForge.Video
Imports System
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Linq
Imports System.Windows.Forms
Imports IronQR

Namespace ReadQR
	Partial Public Class Form1
		Inherits Form

		' Declare a video capture device
		Private videoSource As VideoCaptureDevice

		Public Sub New()
			InitializeComponent()
			AddHandler Me.Load, AddressOf Form1_Load
			AddHandler Me.FormClosing, AddressOf Form1_FormClosing
		End Sub

		Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
			' Stop the video source when the form is closing
			If videoSource IsNot Nothing AndAlso videoSource.IsRunning Then
				videoSource.SignalToStop()
				videoSource.WaitForStop()
			End If
		End Sub

		Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
			' Retrieve video input devices connected to the machine
			Dim videoDevices As New FilterInfoCollection(FilterCategory.VideoInputDevice)

			If videoDevices.Count > 0 Then
				' Use the first available video device
				videoSource = New VideoCaptureDevice(videoDevices(0).MonikerString)
				AddHandler videoSource.NewFrame, AddressOf VideoSource_NewFrame
				videoSource.Start()
			Else
				MessageBox.Show("No video devices found.")
				Close()
			End If
		End Sub

		Private Sub VideoSource_NewFrame(ByVal sender As Object, ByVal eventArgs As NewFrameEventArgs)
			' Update the PictureBox with the new frame from the camera
			pictureBox1.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)

			Dim image = DirectCast(eventArgs.Frame.Clone(), Bitmap)

			' Set the license key for IronQR. Replace "YourKey" with your actual key
			License.LicenseKey = "YourKey"

			' Prepare the image for QR code reading
			Dim imageInput As New QrImageInput(image)

			' Create a QR reader object
			Dim reader As New QrReader()

			' Read QR codes from the image
			Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

			' Display the first QR code result in a MessageBox
			If results.Any() Then
				MessageBox.Show(results.First().Value)
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Archivo de imagen de entrada

El texto codificado en el código QR es: I Love IronQR

Ejemplo de Código QR

Resultado

Resultado del Código QR

Explicación del código de ejemplo

  1. Hemos registrado dos eventos en Windows Forms: Form1_Load y Form1_FormClosing.
  2. También hemos registrado VideoSource_NewFrame a una instancia de videoSource de la biblioteca AForge.Video.DirectShow.
  3. Leemos los códigos QR desde el flujo de video en vivo.
  4. Cuando se detecta un código QR, mostramos un MessageBox con el texto decodificado.

Licencia (Prueba gratuita disponible)

IronQR requiere una clave de licencia. Se puede obtener una clave de prueba del sitio web aquí. Esta clave necesita ser ubicada en appsettings.json.

{
    "IronQR.LicenseKey": "MYLICENSE.KEY.TRIAL"
}

Proporcione el ID de correo electrónico para obtener una licencia de prueba, y después de enviarlo, la clave se entregará por correo electrónico.

Clave de Licencia

Conclusión

En conclusión, los códigos QR han trascendido sus orígenes para volverse indispensables en nuestro ecosistema digital. Con IronQR, los desarrolladores de C# pueden aprovechar el poder del reconocimiento de códigos QR, decodificar datos en varios tipos de códigos QR con facilidad e innovar en diversos dominios.

Conforme los códigos QR continúan evolucionando e integrándose en nuevas tecnologías, su importancia para facilitar el intercambio de datos sin interrupciones y mejorar las experiencias de los usuarios solo crecerá. Abracen el potencial de los códigos QR con IronQR y embarquen en un viaje de innovación y eficiencia en el desarrollo de C#.

Preguntas Frecuentes

¿Cómo puedo configurar un proyecto en C# para leer códigos QR?

Para configurar un proyecto en C# para leer códigos QR, comienza creando una nueva aplicación de formularios de Windows en Visual Studio. Instala la biblioteca IronQR desde el Administrador de Paquetes NuGet y asegúrate de tener la biblioteca AForge.Video.DirectShow para capturar transmisiones de video desde una cámara.

¿Cuáles son los beneficios de usar IronQR para la lectura de códigos QR?

IronQR proporciona capacidades robustas para la lectura de códigos QR aprovechando modelos avanzados de aprendizaje automático. Asegura una decodificación precisa incluso en condiciones desafiantes y es compatible con varios marcos .NET y sistemas operativos.

¿Cómo decodifico un código QR usando IronQR en una aplicación C#?

Para decodificar un código QR en una aplicación C# con IronQR, captura una imagen desde la transmisión de la cámara usando AForge, luego utiliza la biblioteca IronQR para procesar y decodificar el código QR desde la imagen capturada.

¿Puede IronQR decodificar códigos QR de transmisiones de video en vivo?

Sí, IronQR puede decodificar códigos QR de transmisiones de video en vivo integrándose con la biblioteca AForge.Video.DirectShow para capturar cuadros y procesarlos en tiempo real.

¿Qué bibliotecas son esenciales para construir un lector de códigos QR en C#?

Las bibliotecas esenciales para construir un lector de códigos QR en C# incluyen IronQR para decodificar los códigos QR y AForge.Video.DirectShow para capturar transmisiones de video desde la cámara.

¿Cómo asegura IronQR la integridad de los datos durante la decodificación de códigos QR?

IronQR mejora la seguridad y asegura la integridad de los datos al distinguir con precisión entre códigos QR auténticos y potenciales amenazas, manteniendo así la fiabilidad de la información decodificada.

¿Es posible escanear códigos QR desde imágenes usando IronQR?

Sí, IronQR puede escanear códigos QR no solo desde transmisiones en vivo sino también desde imágenes estáticas, proporcionando flexibilidad para diversas necesidades de aplicación.

¿Cómo obtengo una licencia de prueba para IronQR?

Puede obtener una licencia de prueba para IronQR desde el sitio web de Iron Software, lo que le permite probar las características de la biblioteca colocando la clave de prueba en el archivo appsettings.json de su aplicación.

¿Qué papel juega el componente PictureBox en una aplicación de lector de códigos QR?

En una aplicación de lector de códigos QR, el componente PictureBox muestra la transmisión de video en vivo desde la cámara, permitiendo a IronQR capturar y decodificar códigos QR desde los cuadros entrantes.

¿Cómo puedo solucionar problemas con la decodificación de códigos QR en C#?

Si encuentra problemas con la decodificación de códigos QR, asegúrese de que las bibliotecas IronQR y AForge estén correctamente instaladas, verifique que la transmisión de la cámara esté correctamente integrada y asegúrese de que su aplicación esté capturando y procesando correctamente los cuadros de video.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más