Bogue général dans GDI+ [Corrigé]
Lorsque vous essayez de modifier un objet bitmap, d’enregistrer ou de télécharger une image sur un serveur Web, vous pouvez recevoir un message d’erreur Une erreur générique s’est produite dans GDI+ . L’erreur peut se produire quelle que soit l’application utilisée. Cet article fournit les solutions les plus applicables que les utilisateurs concernés peuvent appliquer pour résoudre le problème.
Qu’est-ce que GDI+ ?
Windows GDI+ fournit des graphiques vectoriels, des images et une typographie 2D en agissant comme une couche intermédiaire entre les applications et les pilotes de périphérique pour le rendu des graphiques, des images et du texte 2D. GDI + améliore l’interface de périphérique graphique Windows (GDI) (interface de périphérique graphique incluse dans les versions antérieures de Windows) en ajoutant de nouvelles fonctionnalités et en optimisant celles existantes. En d’autres termes, GDI+ est le sous-système graphique de Windows, qui se compose d’une interface de programmation d’application (API) pour afficher des graphiques et du texte enrichi à la fois sur un écran vidéo et sur une imprimante.
Erreur générale dans GDI+
L’erreur générale générée par l’erreur GDI+ est très générale car l’exception ne fournit aucun détail. Toutefois, si vous rencontrez ce problème, les suggestions ci-dessous devraient vous aider à résoudre le problème en fonction de votre scénario ou de la tâche que vous avez effectuée.
1] Redémarrez l’environnement cible, puis répétez l’action que vous suiviez. Cela a fonctionné pour les utilisateurs concernés déployant ou déplaçant des applications de l’adoption à la production.
2] Cette erreur peut se produire en raison de la définition d’un « verrou » lors de la tentative d’enregistrement et d’écrasement d’un bitmap modifié, car lorsque vous initialisez un objet Bitmap à partir d’une image stockée sur le disque dur, cela crée un verrou sur le fichier image sous-jacent. En d’autres termes, lorsqu’un objet Bitmap ou un objet Image est créé à partir d’un fichier, le fichier reste verrouillé pendant la durée de l’objet. Par conséquent, vous ne pouvez pas modifier l’image et l’enregistrer dans le même fichier dans lequel elle a été créée. Dans ce cas, effectuez l’une des opérations suivantes pour résoudre le problème :
- Au lieu d’écraser le fichier, enregistrez le nouveau fichier sous un nom différent de celui du fichier d’origine.
- Si vous devez écraser un fichier existant, créez un bitmap distinct du bitmap existant, puis supprimez l’ancien bitmap, ce qui déverrouillera le fichier image. Vous pouvez maintenant apporter les modifications nécessaires au nouveau bitmap et enregistrer le nouveau bitmap avec le nom de fichier image d’origine.
- Enregistrer dans un flux de mémoire « intermédiaire ». Le code
Memory /FileStream
vsbitmap.Save(...)
, bien que contre-intuitif, devrait fonctionner avec de légères variations pour tenir compte de l’appel d’une méthode particulière.
Notez que le verrou sous-jacent du fichier n’est libéré que lorsque l’objet Bitmap est supprimé – une fois le verrou libéré, vous pouvez l’écraser.
3] Vous devez vous débarrasser de vos images, car si vous comptez sur le ramasse-miettes pour les trouver à temps et libérer des ressources GDI non gérées, vous obtiendrez probablement une exception. De plus, lors de l’écriture du code, faites attention aux points suivants :
ConvertTo
Cela ressemble à un déchet, utilisez-le simplement si vous en avez besoin.- Si vous avez besoin de concaténer des chemins, utilisez
Path.Combine
. - Utilisez l’interpolation de chaîne au lieu d’ajouter des chaînes ensemble.
- Si vous avez besoin d’échapper un caractère, tel qu’une barre oblique inverse, utilisez Verbatim String Literal @”…”.
- Privilégiez toujours
using
un opérateur qui n’oublie jamais de supprimer un objet, même si le code lève une exception.
4] Aucune autorisation d’écrire dans le dossier lors de l’enregistrement du fichier, surtout si vous obtenez une erreur sur le site Web car le site Web fonctionne avec des autorisations limitées. Dans une application Web, le pool d’applications ou le compte qui exécute le site Web doit avoir un accès en écriture au dossier dans lequel enregistrer le fichier. Assurez-vous donc que le dossier dans lequel vous essayez d’enregistrer le fichier est accessible en écriture. Par exemple, si vous utilisez le site Web sous un compte DefaultAppPool
, vous devez accorder à l’ IIS AppPool\DefaultAppPool
utilisateur des autorisations d’écriture sur le dossier.
5] Si vous utilisez Azure et que vous obtenez une erreur générique dans GDI+ lorsque vous ouvrez un bitmap uniquement sur un serveur Web distant et non sur votre machine de test locale, GDI+ peut être présent sur les serveurs Azure IIS. ne peut pas gérer les nouveaux formats BMP créés par GIMP. Si tel est le cas, effectuez l’une des opérations suivantes pour résoudre le problème :
- Réenregistrez le BMP avec Paint.
- Utilisez plutôt un PNG non compressé.
- Enregistrez au format BMP 24 bits avec GIMP. Cette méthode donnera une mauvaise qualité.
6] Ce message d’erreur s’affiche si le chemin vers lequel vous naviguez Bitmap.Save()
n’est pas valide (le dossier n’existe pas, etc.). Autrement dit, vous écrivez le mauvais chemin pour enregistrer l’image. Dans ce cas, assurez-vous de corriger le chemin d’enregistrement et assurez-vous que votre chemin inclut également le nom du fichier.
7] Si le fichier bitmap existait déjà sur le lecteur système et que votre application a généré une erreur, suivez ces étapes :
- Assurez-vous que le dossier de destination existe.
- Assurez-vous que le dossier de destination ne contient pas déjà un fichier portant ce nom.
- Vérifiez l’autorisation de votre dossier où l’image est enregistrée sur votre disque local. Pour ce faire, cliquez avec le bouton droit sur le dossier, puis sélectionnez Propriétés > Sécurité > Modifier > Ajouter – sélectionnez Tout le monde et cochez la case Autoriser le contrôle total .
Comment résoudre l’erreur générale dans GDI+ en C# ?
Si vous obtenez une erreur générale dans GDI+ en C#, c’est peut-être parce que le fichier bitmap que vous essayez d’enregistrer existe déjà sur votre lecteur système. Dans ce cas, vous pouvez vous assurer que le dossier cible existe et qu’il ne contient pas déjà un fichier portant le même nom.
Qu’est-ce qu’une erreur GDI+ ?
GDI + génère une erreur lorsqu’il ne peut pas enregistrer de fichiers, généralement pour les deux raisons les plus courantes. L’une des raisons est que lorsque vous initialisez un objet Bitmap à partir d’une image stockée sur le disque dur, cela crée un verrou sur le fichier image sous-jacent. En raison du verrou, lorsque vous essayez d’enregistrer et d’écraser un bitmap modifié, cette erreur est renvoyée.
Comment réparer les fenêtres GDI ?
Pour corriger l’erreur GDI+ Windows sur votre appareil, vérifiez si les suggestions suivantes fonctionnent :
- Exécutez une analyse SFC dans une invite de commande élevée.
- Exécutez l’utilitaire de résolution des problèmes d’alimentation.
- Mettez à jour le pilote de votre carte vidéo.
- Vérifiez la mise à jour de Windows.
- Démarrez votre ordinateur en mode démarrage minimal.
Qu’est-ce que GDI sur mon ordinateur portable ?
GDI permet aux développeurs d’applications d’afficher des informations sur un écran ou une imprimante sans se soucier des détails du périphérique d’affichage spécifique. Le développeur de l’application appelle les méthodes fournies par les classes GDI+, et ces méthodes effectuent à leur tour les appels appropriés aux pilotes de périphériques spécifiques. GDI+ isole l’application du matériel graphique, et c’est cette isolation qui permet aux développeurs de créer des applications indépendantes du périphérique.
Windows utilise toujours GDI ?
Avec l’avènement de Windows XP, GDI est devenu obsolète au profit de son successeur, le sous-système GDI+ basé sur C++. Bien que GDI+ soit inclus avec Windows XP et versions ultérieures, la DLL GDI+ peut également être livrée avec une application et utilisée sur des versions antérieures de Windows.
Source : Le Club Windows
Laisser un commentaire