Comment lire des codes-barres à partir d'objets dessin système

Comment lire des BarCodes à partir de System.Drawing en C

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

IronBarcode permet de lire des codes-barres à partir d'objets System.Drawing sur tous les systèmes d'exploitation en les convertissant automatiquement en AnyBitmap via IronDrawing, ce qui résout la limitation de Microsoft à Windows uniquement pour la prise en charge de System.Drawing.

Introduction

<TODO : Ajouter une image ici -->

<Description : Diagramme ou capture d'écran illustrant le concept de code -->

les objets System.Drawing sont largement utilisés dans .NET pour les tâches de traitement d'images. Cependant, Microsoft a discontinué la prise en charge de System.Drawing sur MacOS et Linux, prenant désormais exclusivement en charge Windows. Ce changement a créé des problèmes pour les développeurs qui utilisent IronBarcode sur des systèmes d'exploitation non Windows, car le travail avec des codes-barres implique généralement des graphiques, des images et des fonts.

Pour résoudre ce problème, nous avons introduit IronDrawing. Cette bibliothèque gratuite et open-source, créée par IronSoftware, simplifie la prise en charge multiplateforme et offre une expérience transparente. Lorsque vous installez IronBarcode à partir de NuGet, IronDrawing est automatiquement inclus dans votre projet.

Pour les développeurs qui découvrent la lecture de codes-barres, consultez notre Tutoriel de lecture de codes-barres complet couvrant les concepts fondamentaux et les schémas d'utilisation de base. Si vous travaillez avec divers formats d'image, notre guide sur la lecture de codes-barres à partir d'images fournit un contexte et des exemples supplémentaires.

Démarrage rapide : lire un code-barres à l'aide de AnyBitmap en une seule ligne facile

Cet extrait montre comment IronBarcode lit les codes-barres en créant un System.Drawing.Bitmap et en laissant IronDrawing le mouler implicitement en AnyBitmap. Avec une seule ligne, les développeurs de n'importe quel système d'exploitation obtiennent des résultats rapides.

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

  1. Installez IronBarcode avec le gestionnaire de packages NuGet

    PM > Install-Package BarCode

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

    var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));
  3. Déployez pour tester sur votre environnement de production.

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

Comment faire passer des objets `System.Drawing` à `AnyBitmap` ? La lecture des codes-barres à partir de `System.Drawing` nécessite le moulage de l'objet en `AnyBitmap`. `IronDrawing` a été conçu pour être facile à utiliser et prend en charge le moulage implicite pour les objets image de `System.Drawing` en objets image `IronSoftware.Drawing` appelés `AnyBitmap`. Outre les objets `System.Drawing`, nous prenons en charge le moulage à partir d'autres types : - **`System.Drawing.Bitmap`** - **`System.Drawing.Image`** - **`SkiaSharp.SKBitmap`** - **`SkiaSharp.SKImage`** - **`SixLabors.ImageSharp`** Voir cet [exemple de code](/open-source/csharp/drawing/examples/cast-to-anybitmap/) pour le moulage des objets ci-dessus. Vous trouverez ci-dessous une démonstration du moulage d'images de codes-barres à partir d'objets `System.Drawing` dans `IronSoftware.Drawing.AnyBitmap` :

Quels types de `System.Drawing` peuvent être coulés ? ```csharp :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-cast-to-anybitmap.cs ``` Ce code démontre une intégration transparente entre les objets `System.Drawing` et `IronBarcode` à travers `IronDrawing`. Cette compatibilité s'étend à divers formats de codes-barres, détaillés dans notre [guide des formats de codes-barres pris en charge](https://ironsoftware.com/csharp/barcode/get-started/supported-barcode-formats/), notamment les codes QR, le Code 128, le Code 39 et bien d'autres.

Pourquoi la fonte implicite fonctionne-t-elle ? Dans le code ci-dessus, nous avons chargé deux images de codes-barres en tant que `System.Drawing.Bitmap` et `System.Drawing.Image`. Nous les avons ensuite implicitement coulés dans `AnyBitmap` en les assignant à des objets `AnyBitmap`, puis nous avons ajouté ces objets à une liste `AnyBitmap`. `Le mécanisme de casting implicite d'IronDrawing` utilise la surcharge d'opérateur, fournissant une conversion transparente entre les types `System.Drawing` et `AnyBitmap`. Ce modèle de conception permet aux développeurs de conserver le code existant tout en bénéficiant d'une compatibilité multiplateforme. La conversion préserve toutes les propriétés de l'image, y compris la résolution, la profondeur des couleurs et les données relatives aux pixels, afin d'éviter toute perte de qualité.

Quand dois-je utiliser le moulage explicite ou implicite ? Bien que le moulage implicite soit pratique, le moulage explicite peut être préféré dans certains scénarios : ```csharp // Implicit casting - clean and simple for straightforward conversions System.Drawing.Bitmap systemBitmap = new System.Drawing.Bitmap("barcode.png"); AnyBitmap anyBitmap = systemBitmap; // Implicit cast // Explicit casting - useful when type clarity is important System.Drawing.Image systemImage = System.Drawing.Image.FromFile("qrcode.jpg"); AnyBitmap explicitBitmap = (AnyBitmap)systemImage; // Explicit cast // When working with nullable types or conditional logic System.Drawing.Bitmap? nullableBitmap = GetBitmapFromSource(); if (nullableBitmap != null) { AnyBitmap result = (AnyBitmap)nullableBitmap; // Explicit cast for clarity // Process the barcode } ```

Quelles sont les erreurs de moulage les plus courantes ? Lors de la conversion de `System.Drawing` en `AnyBitmap`, les développeurs peuvent rencontrer : 1. **Exceptions de référence nulle** : Vérifiez que votre objet `System.Drawing` n'est pas nul avant de le lancer 2. **Exceptions de formats non pris en charge** : certains formats d'images exotiques nécessitent une conversion préalable 3. **Questions de mémoire** : Les images de grande taille doivent être éliminées de manière appropriée Pour le dépannage des problèmes de coulage, notre [guide de dépannage](https://ironsoftware.com/csharp/barcode/troubleshooting/barcode-not-recognized/) fournit des solutions aux problèmes courants lors de la reconnaissance des codes-barres. ## Comment lire des BarCodes à partir d'objets `AnyBitmap`? IronBarcode accepte les objets **`IronSoftware.Drawing.AnyBitmap`** dans toutes les méthodes sans configuration supplémentaire. Cela simplifie le développement lors de l'utilisation d'objets `System.Drawing` sur des systèmes d'exploitation non Windows. Le code suivant illustre cela :

Quelles sont les méthodes qui acceptent les paramètres `AnyBitmap` ? ```csharp :path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-read-anybitmap.cs ``` Au-delà de la méthode de base `Read`, IronBarcode fournit plusieurs méthodes acceptant des paramètres `AnyBitmap`. Pour les scénarios avancés, consultez notre guide sur [la lecture de plusieurs codes-barres](https://ironsoftware.com/csharp/barcode/how-to/read-multiple-barcodes/) démontrant le traitement efficace de plusieurs codes-barres dans une seule image : ```csharp // Advanced barcode reading with options var readerOptions = new BarcodeReaderOptions { // Specify barcode types to search for ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128, // Enable machine learning for better accuracy UseML = true, // Set confidence threshold Confidence = 0.95 }; // Read with specific options var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions); ``` ### Comment gérer les résultats de plusieurs BarCodes? Le code ci-dessus prolonge l'exemple précédent. Après avoir alimenté la liste `AnyBitmap`, nous l'avons itérée et avons appelé la méthode `Read` sur chaque objet `AnyBitmap`, qui a renvoyé **`IronBarcode.BarcodeResults`**. Nous avons ensuite itéré sur les résultats pour imprimer les valeurs des codes-barres sur la console. Lorsque vous traitez plusieurs BarCodes, tirez parti du traitement parallèle pour de meilleures performances : ```csharp // Parallel processing for multiple barcode images var barcodeFiles = Directory.GetFiles("barcodes/", "*.png"); var allResults = new ConcurrentBag(); Parallel.ForEach(barcodeFiles, file => { var bitmap = new System.Drawing.Bitmap(file); var anyBitmap = (AnyBitmap)bitmap; var results = BarcodeReader.Read(anyBitmap); foreach (var result in results) { allResults.Add(result); } bitmap.Dispose(); // Clean up resources }); // Process all results foreach (var result in allResults) { Console.WriteLine($"Found {result.BarcodeType}: {result.Value}"); } ``` ### Quelles autres `Fonctionnalités d'IronDrawing` puis-je utiliser? la fonctionnalité de `IronSoftware.Drawing` s'étend au-delà du moulage d'images. Elle prend en charge les aspects liés au traitement de l'image tels que les **couleurs** et les **fontes** utiles pour styliser les codes-barres et les codes QR. Découvrez comment nous utilisons `IronDrawing` pour [personnaliser et ajouter des logos aux codes QR](https://ironsoftware.com/csharp/barcode/how-to/customize-qr-code-style/). `IronDrawing` offre de puissantes capacités de manipulation d'images complétant le traitement des codes-barres : ```csharp // Using IronDrawing for image preprocessing using IronSoftware.Drawing; // Load and preprocess an image before barcode reading AnyBitmap preprocessedImage = AnyBitmap.FromFile("noisy-barcode.jpg"); // Apply image filters to improve barcode readability preprocessedImage = preprocessedImage.ToGrayScale(); preprocessedImage = preprocessedImage.Contrast(1.5); // Increase contrast preprocessedImage = preprocessedImage.Sharpen(); // Sharpen image // Read the preprocessed barcode var improvedResults = BarcodeReader.Read(preprocessedImage); ``` Pour les scénarios nécessitant des corrections d'image spécifiques, notre [guide de correction d'image](https://ironsoftware.com/csharp/barcode/how-to/image-correction/) détaille l'utilisation de filtres pour améliorer la lisibilité des codes-barres. ### Pourquoi choisir `IronDrawing` plutôt que `System.Drawing`? `IronDrawing` offre des avantages convaincants par rapport à `System.Drawing` : 1. : Fonctionne de manière transparente sur Windows, Linux et macOS contrairement à `System.Drawing` (Windows uniquement dans .NET Core/5+) 2. **Architecture moderne** : Construit sur `SkiaSharp` et `ImageSharp` pour de meilleures performances et une meilleure gestion de la mémoire 3. **Application simplifiée** : Maintient les interfaces familières de type `System.Drawing` tout en ajoutant des commodités modernes 4. **Développement actif** : Mises à jour et améliorations régulières, contrairement à `System.Drawing` en mode maintenance 5. **Meilleure intégration** : Conçu spécifiquement pour des performances optimales avec les produits IronSoftware Pour les considérations relatives au déploiement, en particulier pour les environnements cloud, consultez nos guides sur [le déploiement vers Azure](https://ironsoftware.com/csharp/barcode/get-started/azure/) et [le déploiement vers AWS](https://ironsoftware.com/csharp/barcode/get-started/aws/), qui comprennent des notes spécifiques sur la compatibilité multiplateforme à l'aide d'`IronDrawing`. Qu'il s'agisse de créer des applications de bureau, des services web ou des solutions cloud-natives, `IronDrawing` veille à ce que votre code de traitement des codes-barres reste portable et efficace sur toutes les plateformes, ce qui en fait le choix idéal pour le développement .NET moderne.

Questions Fréquemment Posées

Comment puis-je lire des codes-barres à partir d'objets System.Drawing sur des plateformes non Windows ?

IronBarcode gère automatiquement la lecture de codes-barres multiplateformes à partir d'objets System.Drawing grâce à IronDrawing, qui les convertit au format AnyBitmap. Cela résout la limitation de Microsoft selon laquelle System.Drawing est réservé à Windows, ce qui vous permet de lire les codes-barres sur les systèmes MacOS et Linux de manière transparente.

Qu'est-ce qu'IronDrawing et pourquoi est-il inclus dans la lecture de codes-barres ?

IronDrawing est une bibliothèque gratuite et open-source créée par IronSoftware qui fournit un support multiplateforme pour les opérations graphiques. Elle est automatiquement incluse lorsque vous installez IronBarcode depuis NuGet et permet la lecture de codes-barres à partir d'objets System.Drawing sur tous les systèmes d'exploitation en les convertissant au format compatible AnyBitmap.

Comment convertir un System.Drawing.Bitmap pour y lire des codes-barres ?

Vous pouvez lire des BarCodes à partir de System.Drawing.Bitmap avec un simple cast vers AnyBitmap : `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png"));`. IronBarcode gère la conversion automatiquement grâce à la fonctionnalité de casting implicite d'IronDrawing.

Puis-je lire des BarCodes sur Linux et MacOS en utilisant System.Drawing ?

Oui, IronBarcode permet la lecture de codes-barres à partir d'objets System.Drawing sur Linux et MacOS grâce à IronDrawing, qui convertit automatiquement les objets System.Drawing au format multiplateforme AnyBitmap. Cela permet de surmonter la limitation de Microsoft à Windows pour la prise en charge de System.Drawing.

Quels types d'objets System.Drawing peuvent être utilisés pour la lecture de codes-barres ?

IronBarcode prend en charge la lecture de codes-barres à partir de divers objets System.Drawing, notamment System.Drawing.Bitmap et d'autres types d'images. Ces dernières sont automatiquement converties en AnyBitmap grâce à la fonction de moulage implicite d'IronDrawing, ce qui permet une fonctionnalité de lecture de codes-barres multiplateforme.

Existe-t-il une solution simple en une ligne pour lire les codes-barres à partir de System.Drawing ?

Oui, IronBarcode fournit une solution en une ligne : `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png"));`. Cette simple ligne crée un System.Drawing.Bitmap, le convertit en AnyBitmap à travers IronDrawing, et lit tous les codes-barres présents dans l'image.

Hairil Hasyimi Bin Omar
Ingénieur logiciel
Comme tous les grands ingénieurs, Hairil est un apprenant avide. Il affine ses connaissances en C#, Python et Java, utilisant ces connaissances pour apporter de la valeur aux membres de l'équipe dans toute Iron Software. Hairil a rejoint l'équipe d'Iron Software depuis l'Université Teknologi MARA en Malaisie, ...
Lire la suite
Prêt à commencer?
Nuget Téléchargements 2,002,059 | Version : 2025.12 vient de sortir