Allgemeiner Fehler in GDI+ [behoben]
Wenn Sie versuchen, ein Bitmap-Objekt zu ändern, ein Bild zu speichern oder auf einen Webserver hochzuladen, erhalten Sie möglicherweise eine Fehlermeldung . In GDI+ ist ein allgemeiner Fehler aufgetreten . Der Fehler kann unabhängig von der verwendeten Anwendung auftreten. Dieser Beitrag enthält die am besten geeigneten Lösungen, die betroffene Benutzer anwenden können, um das Problem zu beheben.
Was ist GDI+?
Windows GDI+ stellt 2D-Vektorgrafiken, -Bilder und -Typografie bereit, indem es als Zwischenschicht zwischen Anwendungen und Gerätetreibern zum Rendern von 2D-Grafiken, -Bildern und -Text fungiert. GDI+ verbessert die Windows Graphics Device Interface (GDI) (Grafikgeräteschnittstelle, die in früheren Windows-Versionen enthalten war), indem neue Funktionen hinzugefügt und vorhandene optimiert werden. Mit anderen Worten, GDI+ ist das Windows-Grafiksubsystem, das aus einer Anwendungsprogrammierschnittstelle (API) zum Anzeigen von Grafiken und Rich-Text sowohl auf einem Videodisplay als auch auf einem Drucker besteht.
Allgemeiner Fehler in GDI+
Der vom GDI+-Fehler ausgelöste allgemeine Fehler ist sehr allgemein, da die Ausnahme keine Details bereitstellt. Wenn Sie jedoch mit diesem Problem konfrontiert sind, sollten die folgenden Vorschläge Ihnen helfen, das Problem zu lösen, abhängig von Ihrem Szenario oder der von Ihnen abgeschlossenen Aufgabe.
1] Starten Sie die Zielumgebung neu und wiederholen Sie dann die Aktion, der Sie gefolgt sind. Dies hat für betroffene Benutzer funktioniert, die Apps von der Einführung in die Produktion bereitstellen oder verschieben.
2] Dieser Fehler kann auftreten, wenn beim Versuch, eine geänderte Bitmap zu speichern und zu überschreiben, eine „Sperre“ gesetzt wird, da beim Initialisieren eines Bitmap-Objekts aus einem auf der Festplatte gespeicherten Bild eine Sperre für die zugrunde liegende Bilddatei erstellt wird. Mit anderen Worten, wenn ein Bitmap-Objekt oder ein Bildobjekt aus einer Datei erstellt wird, bleibt die Datei für die Dauer des Objekts gesperrt. Daher können Sie das Bild nicht ändern und es wieder in derselben Datei speichern, in der es erstellt wurde. Führen Sie in diesem Fall einen der folgenden Schritte aus, um das Problem zu beheben:
- Anstatt die Datei zu überschreiben, speichern Sie die neue Datei unter einem anderen Namen als die Originaldatei.
- Wenn Sie eine vorhandene Datei überschreiben müssen, erstellen Sie eine separate Bitmap aus der vorhandenen Bitmap und verwerfen Sie dann die alte Bitmap, wodurch die Bilddatei entsperrt wird. Sie können nun die erforderlichen Änderungen an der neuen Bitmap vornehmen und die neue Bitmap unter dem ursprünglichen Bilddateinamen speichern.
- Speichern Sie in einem „Zwischen“-Speicherstrom. Der Code
Memory /FileStream
vsbitmap.Save(...)
ist zwar kontraintuitiv, sollte aber mit geringfügigen Variationen funktionieren, um das Aufrufen einer bestimmten Methode zu berücksichtigen.
Beachten Sie, dass die zugrunde liegende Sperre der Datei nur aufgehoben wird, wenn das Bitmap-Objekt gelöscht wird – sobald die Sperre aufgehoben ist, können Sie sie überschreiben.
3] Sie müssen Ihre Bilder loswerden, denn wenn Sie sich darauf verlassen, dass der Garbage Collector sie rechtzeitig findet und nicht verwaltete GDI-Ressourcen freigibt, erhalten Sie wahrscheinlich eine Ausnahme. Beachten Sie außerdem beim Schreiben von Code die folgenden Punkte:
ConvertTo
Es sieht aus wie eine Verschwendung, verwenden Sie es einfach, wenn Sie es brauchen.- Wenn Sie Pfade verketten müssen, verwenden Sie
Path.Combine
. - Verwenden Sie die Zeichenfolgeninterpolation, anstatt Zeichenfolgen zusammenzufügen.
- Wenn Sie ein Zeichen wie einen umgekehrten Schrägstrich maskieren müssen, verwenden Sie das Verbatim String Literal @“…“.
- Bevorzugen Sie immer
using
einen Operator, der niemals vergisst, ein Objekt zu löschen, selbst wenn der Code eine Ausnahme auslöst.
4] Keine Berechtigung zum Schreiben in den Ordner beim Speichern der Datei, insbesondere wenn Sie einen Fehler auf der Website erhalten, weil die Website mit eingeschränkten Berechtigungen ausgeführt wird. In einer Webanwendung muss der Anwendungspool oder das Konto, das die Website ausführt, Schreibzugriff auf den Ordner haben, in dem die Datei gespeichert werden soll. Stellen Sie daher sicher, dass der Ordner, in dem Sie die Datei speichern möchten, beschreibbar ist. Wenn Sie die Website beispielsweise unter einem Konto DefaultAppPool
verwenden, müssen Sie dem IIS AppPool\DefaultAppPool
Benutzer Schreibrechte für den Ordner erteilen.
5] Wenn Sie Azure verwenden und einen allgemeinen Fehler in GDI+ erhalten, wenn Sie eine Bitmap nur auf einem Remote-Webserver und nicht auf Ihrem lokalen Testcomputer öffnen, ist GDI+ möglicherweise auf den Azure IIS-Servern vorhanden. kann keine neuen BMP-Formate verarbeiten, die von GIMP erstellt wurden. Führen Sie in diesem Fall einen der folgenden Schritte aus, um das Problem zu beheben:
- Speichern Sie das BMP erneut mit Paint.
- Verwenden Sie stattdessen ein unkomprimiertes PNG.
- Speichern Sie mit GIMP als 24-Bit-BMP. Diese Methode ergibt eine schlechte Qualität.
6] Diese Fehlermeldung wird angezeigt, wenn der Pfad, zu dem Sie navigieren Bitmap.Save()
, ungültig ist (der Ordner existiert nicht usw.). Einfach ausgedrückt, Sie schreiben den falschen Pfad, um das Bild zu speichern. Korrigieren Sie in diesem Fall unbedingt den Speicherpfad und vergewissern Sie sich, dass Ihr Pfad auch den Dateinamen enthält.
7] Wenn die Bitmap-Datei bereits auf dem Systemlaufwerk vorhanden war und Ihre Anwendung einen Fehler ausgab, gehen Sie folgendermaßen vor:
- Stellen Sie sicher, dass der Zielordner vorhanden ist.
- Stellen Sie sicher, dass der Zielordner nicht bereits eine Datei mit diesem Namen enthält.
- Überprüfen Sie die Berechtigung Ihres Ordners, in dem das Bild auf Ihrem lokalen Laufwerk gespeichert ist. Klicken Sie dazu mit der rechten Maustaste auf den Ordner und wählen Sie dann Eigenschaften > Sicherheit > Bearbeiten > Hinzufügen – wählen Sie Alle aus und aktivieren Sie das Kontrollkästchen Vollzugriff zulassen .
Wie löst man einen allgemeinen Fehler in GDI+ in C#?
Wenn Sie einen allgemeinen Fehler in GDI+ in C# erhalten, kann dies daran liegen, dass die Bitmap-Datei, die Sie zu speichern versuchen, bereits auf Ihrem Systemlaufwerk vorhanden ist. In diesem Fall können Sie sicherstellen, dass der Zielordner existiert und nicht bereits eine Datei mit demselben Namen enthält.
Was ist ein GDI+-Fehler?
GDI+ gibt einen Fehler aus, wenn Dateien nicht gespeichert werden können, normalerweise aus den beiden häufigsten Gründen. Ein Grund dafür ist, dass beim Initialisieren eines Bitmap-Objekts aus einem auf der Festplatte gespeicherten Bild eine Sperre für die zugrunde liegende Bilddatei erstellt wird. Aufgrund der Sperre wird dieser Fehler ausgegeben, wenn Sie versuchen, eine geänderte Bitmap zu speichern und zu überschreiben.
Wie repariert man GDI-Fenster?
Um den GDI+ Windows-Fehler auf Ihrem Gerät zu beheben, überprüfen Sie, ob die folgenden Vorschläge funktionieren:
- Führen Sie einen SFC-Scan in einer Eingabeaufforderung mit erhöhten Rechten aus.
- Führen Sie die Problembehandlung für die Stromversorgung aus.
- Aktualisieren Sie Ihren Grafikkartentreiber.
- Überprüfen Sie Windows-Update.
- Starten Sie Ihren Computer im sauberen Neustartmodus.
Was ist GDI auf meinem Laptop?
Mit GDI können Anwendungsentwickler Informationen auf einem Bildschirm oder Drucker anzeigen, ohne sich Gedanken über die Details des jeweiligen Anzeigegeräts machen zu müssen. Der Anwendungsentwickler ruft die von den GDI+-Klassen bereitgestellten Methoden auf, und diese Methoden führen wiederum die entsprechenden Aufrufe an bestimmte Gerätetreiber durch. GDI+ isoliert die Anwendung von der Grafikhardware, und diese Isolierung ermöglicht es Entwicklern, geräteunabhängige Anwendungen zu erstellen.
Windows verwendet immer noch GDI?
Mit dem Aufkommen von Windows XP wurde GDI zugunsten seines Nachfolgers, des C++-basierten GDI+-Subsystems, verworfen. Obwohl GDI+ in Windows XP und höher enthalten ist, kann die GDI+-DLL auch mit einer Anwendung geliefert und in früheren Versionen von Windows verwendet werden.
Quelle: Der Windows-Club
Schreibe einen Kommentar