Comment lire les codes QR à partir d'images en C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronQR permet aux développeurs de lire des codes QR à partir de divers formats d'image en C# en chargeant des images avec IronDrawing, en créant un objet QrImageInput et en utilisant la méthode BarcodeReader.Read pour décoder efficacement les données QR.

Quickstart : Read QR Code from Image in C#

Comment lire les codes QR à partir de différents formats d'image ?

IronQR offre une prise en charge intégrée de la lecture des codes QR à partir de divers formats d'image. Cette fonctionnalité utilise des modèles d'apprentissage automatique avancés pour garantir un décodage précis de différents types de médias. Les formats pris en charge sont les suivants :

  • Groupe d'experts en photographie (JPEG)
  • Graphiques réseau portables (PNG)
  • Format d'échange de graphiques (GIF)
  • Format de fichier d'image étiquetée (TIFF)
  • Fichier d'image bitmap (BMP)
  • WBMP
  • WebP
  • Icône (ico)
  • WMF
  • RawFormat (raw)

La prise en charge de ce format est permise par la bibliothèque open-source IronDrawing, qui gère efficacement le traitement des images. Vous pouvez traiter des codes QR provenant d'appareils photo numériques, de scanners, d'appareils mobiles ou de téléchargements sur le web sans conversion de format.

Exemple de code QR avec un motif noir et blanc clair montrant les carrés de positionnement et les modules de données pour le test de la lecture d'images

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronQR avec le gestionnaire de packages NuGet

    PM > Install-Package IronQR

  2. Copiez et exécutez cet extrait de code.

    // 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 QR code from the image
                var result = BarcodeReader.Read(qrImageInput);
    
                // Iterate through each detected QR code and display its information
                foreach (var barcodeResult in result.Barcodes)
                {
                    Console.WriteLine($"QR Code Data: {barcodeResult.Value}");
                }
            }
        }
    }
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronQR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Remarque : remplacez " path/to/your/image/file.webp " par le chemin d'accès réel à votre fichier image de code QR.

Vous vous demandez quelle est la valeur du code QR dans les images d'exemple ? Essayez avec cet extrait de code !

Pourquoi IronQR prend-il en charge plusieurs formats d'image?

La lecture d'un code QR consiste à scanner et à décoder les informations stockées dans un code QR. La traduction est généralement réalisée à l'aide d'un appareil photo ou d'un scanner associé à un logiciel capable d'interpréter les données du code QR. Les informations contenues dans un code QR peuvent être du texte, des URL, des coordonnées ou d'autres types de données.

La prise en charge multiformat d'IronQR est essentielle pour les applications du monde réel où les codes QR apparaissent dans divers contextes - des supports marketing et emballages de produits aux documents numériques et contenus web. En prenant en charge divers formats, IronQR garantit que les développeurs peuvent créer des applications robustes sans se soucier de la compatibilité des formats d'image. Découvrez les capacités de lecture d'IronQR pour comprendre comment cette flexibilité améliore votre flux de travail de développement.

Quand utiliser chaque format d'image?

Différents formats d'image servent différents objectifs dans le traitement des codes QR :

  • <PNG : idéal pour les codes QR nécessitant de la transparence ou lorsque la qualité de l'image est primordiale. La compression sans perte du format PNG permet de conserver la netteté et la lisibilité des motifs des codes QR.
  • JPEG : idéal pour les photographies contenant des codes QR ou lorsque la taille du fichier pose problème. Utilisez des paramètres de qualité plus élevés (80 %+) pour éviter que les artefacts de compression n'affectent la lisibilité.
  • TIFF : Parfait à des fins d'archivage ou pour travailler avec des documents numérisés dans des environnements d'entreprise.
  • WebP : Format moderne offrant une excellente compression tout en conservant la qualité, idéal pour les applications web.

Pour des résultats optimaux, quel que soit le format, veillez à ce que vos images aient une résolution suffisante (au moins 300 DPI pour les codes QR imprimés) et soient suffisamment contrastées. Consultez nos exemples de lecture QR avancée pour connaître les techniques d'optimisation spécifiques à chaque format.

Que se passe-t-il si la qualité de l'image est médiocre ?

IronQR intègre des fonctions de tolérance aux défauts pour gérer les images imparfaites. En cas d'images de mauvaise qualité, la bibliothèque a recours à plusieurs stratégies :

  1. Correction des erreurs : Les codes QR incluent des capacités de correction d'erreurs (niveaux L, M, Q, H), ce qui permet de récupérer des données même lorsque jusqu'à 30 % du code est endommagé
  2. Amélioration de l'apprentissage machine : les modèles ML d'IronQR détectent et compensent les problèmes courants tels que le flou, la distorsion et le mauvais éclairage
  3. Prétraitement : L'amélioration automatique de l'image améliore le contraste et la netteté avant les tentatives de décodage

Pour les scénarios difficiles, envisagez d'utiliser les options de mode de lecture QR personnalisé pour affiner le processus de lecture :

// Example: Reading QR codes 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 QR codes 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 QR codes 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 QR codes 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}%");
            }
        }
    }
}
$vbLabelText   $csharpLabel

Récupération des valeurs d'un code QR

[//]: # (Ceci est un commentaire qui sera masqué. La valeur a été mentionnée précédemment dans l'exemple ci-dessus. Je jouerai un rôle plus explicatif mais bref lors de sa nouvelle définition.

La plupart des fonctions IronQR renvoient une collection pour prendre en charge plusieurs détections. Puisque results sont une séquence d'objets, ils ne possèdent pas de propriété Value . L'exemple de code sélectionne spécifiquement le premier QrResult de la collection et récupère sa valeur.

: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}");
$vbLabelText   $csharpLabel

Détection de la position d'un code QR dans une image

IronQR va au-delà du simple décodage pour localiser précisément l'emplacement d'un code QR dans une image. Ce positionnement utilise un système de coordonnées standard où PointF (0,0) représente le coin supérieur gauche de l'image. Les coordonnées spatiales exactes des coins du code QR sont accessibles via le tableau Points[] .

Dans cet exemple, les coordonnées des quatre points du code QR détecté sont récupérées et affichées sur la console.

Veuillez noterLes coordonnées renvoyées par cette fonction sont stockées dans une séquence stricte en " zigzag " : en haut à gauche, en haut à droite, en bas à gauche et enfin en bas à droite

: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}");
}
$vbLabelText   $csharpLabel

Entrée QR Code

code QR

Sortie

Notez que le système a enregistré les coordonnées spatiales exactes de chaque coin du code QR sur la console.

QR de détection de contours

Types de codes QR pris en charge

Plusieurs types de codes QR sont pris en charge, aussi bien pour la création que pour la lecture. IronQR offre une prise en charge complète des différents formats de codes QR afin de répondre aux divers besoins des applications. Pour en savoir plus sur les formats QR pris en charge, consultez notre documentation. Voici les types de codes QR pris en charge :

  • QRCode : Le code QR standard le plus couramment utilisé aujourd'hui. Il peut stocker jusqu'à 7 089 caractères numériques ou 4 296 caractères alphanumériques, ce qui le rend adapté aux URL de sites web, aux informations de contact et à d'autres applications.
Exemple de code QR avec un motif noir et blanc clair montrant les carrés de positionnement et les modules de données pour le test de la lecture d'images
  • MicroQRCode : Une version plus petite du code QR standard conçue pour un espace limité. Il peut stocker jusqu'à 35 caractères numériques ou 21 caractères alphanumériques, ce qui est idéal pour les petits emballages ou les petites étiquettes imprimées.
Code QR standard avec motifs de recherche et modules de données démontrant la structure typique d'un code QR
  • RMQRCode : Le code RMQR(Rectangular Micro QRCode) est une version rectangulaire compacte plutôt que carrée. Cette version permet une flexibilité dans le rapport d'aspect, utile pour les applications où l'on dispose d'un espace rectangulaire.
Exemple de code QR rectangulaire montrant un format non carré avec des marqueurs de positionnement et des modèles de données standard

Comment choisir le bon type de code QR?

Le choix du type de code QR approprié dépend de votre cas d'utilisation et de vos contraintes spécifiques :

  • Code QR standard : Choisissez-le pour les applications générales où l'espace n'est pas limité et où vous avez besoin d'une capacité de données maximale. Parfait pour les URL, les identifiants WiFi, les contacts vCard ou les informations détaillées sur les produits. Voir nos exemples de génération de code QR pour plus de détails sur la mise en œuvre.

  • Micro QR Code : idéal pour les petites surfaces telles que les composants électroniques, les étiquettes de bijoux ou les appareils médicaux. Malgré sa capacité limitée, il est parfait pour les numéros de série, les URL simples ou les codes de suivi de base.

  • Code RMQR : Choisissez des codes rectangulaires lorsque l'espace disponible présente des contraintes dimensionnelles spécifiques, telles que des étiquettes étroites sur des produits cylindriques ou des espaces allongés sur les bords de l'emballage.

Quelles sont les limites du stockage de données ?

Comprendre la capacité des données permet d'optimiser la mise en œuvre du code QR :

Type de code QR Numérique uniquement Alphanumérique Binaire Kanji
QR standard 7,089 4,296 2,953 1,817
Micro QR 35 21 15 9
RMQR Variable Variable Variable Variable

Tenez compte de ces facteurs lorsque vous planifiez le stockage des données :

  • Utiliser des raccourcisseurs d'URL pour les liens web afin de maximiser l'espace disponible
  • Mettre en œuvre la compression des données pour les grands ensembles de données
  • Choisir les niveaux de correction d'erreurs appropriés (une correction plus élevée réduit la capacité)

Pour les mises en œuvre avancées, consultez notre guide de génération de codes QR stylisés afin d'équilibrer l'esthétique et la capacité des données.

Quand dois-je utiliser les codes Micro ou RMQR?

Les codes Micro et RMQRexcellent dans des scénarios spécifiques :

Les micro-codes QR sont parfaits pour :

  • Cartes de circuits électroniques nécessitant un suivi des composants
  • Petits dispositifs médicaux nécessitant des identifiants de patients ou de médicaments
  • Authentification de bijoux avec un espace de gravure limité
  • Étiquettes miniatures de produits dans l'industrie manufacturière

Les codes RMQRconviennent le mieux à :

  • Étiquettes d'expédition étroites sur des tubes ou des tuyaux
  • Espaces allongés sur le corps d'un stylo ou d'un outil
  • Matériel de marketing de type bannière
  • Intégration dans les éléments de conception rectangulaire existants

Voici un exemple pratique de lecture de différents types de codes QR :

using IronBarcode;
using IronSoftware.Drawing;

public class MultiTypeQRReader
{
    public static void ReadVariousQRTypes()
    {
        // Configure reader to handle all QR code 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 QR code 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("---");
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

Pour les déploiements en production, consultez notre guide des packages NuGet pour vous assurer que vous avez le bon package pour votre plateforme, et consultez la référence API pour une documentation complète sur toutes les méthodes et propriétés disponibles.

Questions Fréquemment Posées

Quels formats d'image IronQR prend-il en charge pour la lecture des codes QR ?

IronQR prend en charge la lecture des codes QR à partir de plusieurs formats d'image, notamment JPEG, PNG, GIF, TIFF, BMP, WBMP, WebP, ICO, WMF et RawFormat. Cette prise en charge complète des formats est assurée par IronDrawing, ce qui vous permet de traiter des codes QR provenant de diverses sources sans conversion de format.

Comment lire un code QR à partir d'un fichier image en C#?

Pour lire un code QR à l'aide d'IronQR, commencez par charger votre image à l'aide de Image.FromFile(), créez un objet QrImageInput à partir de l'image chargée, puis utilisez BarcodeReader.Read() pour décoder les données QR. La méthode renvoie des résultats que vous pouvez parcourir pour accéder aux informations de chaque code QR détecté.

Quelle technologie permet une lecture précise des codes QR sur différents types de supports ?

IronQR utilise des modèles avancés d'apprentissage automatique pour garantir un décodage précis des codes QR sur différents types de supports et formats d'image. Cette approche alimentée par l'IA permet de maintenir une précision élevée même dans des conditions d'image difficiles.

Puis-je lire plusieurs codes QR à partir d'une seule image ?

Oui, IronQR peut détecter et lire plusieurs codes QR à partir d'une seule image. La méthode BarcodeReader.Read renvoie une collection de résultats, ce qui vous permet de parcourir chaque code QR détecté à l'aide d'une boucle foreach pour accéder aux données individuelles du code QR.

Quels types de données peuvent être stockés dans les codes QR lus par IronQR ?

IronQR peut décoder divers types de données stockées dans les codes QR, notamment du texte brut, des URL, des coordonnées et d'autres formes de données structurées. Les informations décodées sont accessibles via la propriété Value de chaque objet BarcodeResult.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 55,860 | Version : 2025.12 vient de sortir