Bug generale in GDI+ [Risolto]
Quando si tenta di modificare un oggetto bitmap, salvare o caricare un’immagine su un server Web, è possibile che venga visualizzato un messaggio di errore Si è verificato un errore generico in GDI+ . L’errore può verificarsi indipendentemente dall’applicazione utilizzata. Questo post fornisce le soluzioni più applicabili che gli utenti interessati possono applicare per risolvere il problema.
Cos’è GDI+?
Windows GDI+ fornisce grafica vettoriale 2D, immagini e tipografia agendo da livello intermedio tra le applicazioni e i driver di dispositivo per il rendering di grafica, immagini e testo 2D. GDI+ migliora l’interfaccia del dispositivo grafico di Windows (GDI) (l’interfaccia del dispositivo grafico inclusa nelle versioni precedenti di Windows) aggiungendo nuove funzionalità e ottimizzando quelle esistenti. In altre parole, GDI+ è il sottosistema grafico di Windows, che consiste in un’API (Application Programming Interface) per la visualizzazione di grafica e RTF sia su uno schermo video che su una stampante.
Errore generale in GDI+
L’errore generale generato dall’errore GDI+ è molto generale poiché l’eccezione non fornisce alcun dettaglio. Tuttavia, se stai affrontando questo problema, i suggerimenti seguenti dovrebbero aiutarti a risolvere il problema a seconda del tuo scenario o dell’attività che hai completato.
1] Riavvia l’ambiente di destinazione e quindi ripeti l’azione che stavi seguendo. Questo ha funzionato per gli utenti interessati che distribuiscono o spostano le app dall’adozione alla produzione.
2] Questo errore può verificarsi a causa dell’impostazione di un “blocco” quando si tenta di salvare e sovrascrivere una bitmap modificata, poiché quando si inizializza un oggetto Bitmap da un’immagine archiviata sul disco rigido, viene creato un blocco sul file immagine sottostante. In altre parole, quando un oggetto Bitmap o un oggetto Immagine viene creato da un file, il file rimane bloccato per la durata dell’oggetto. Di conseguenza, non è possibile modificare l’immagine e salvarla nuovamente nello stesso file in cui è stata creata. In questo caso, eseguire una delle seguenti operazioni per risolvere il problema:
- Invece di sovrascrivere il file, salva il nuovo file con un nome diverso da quello originale.
- Se è necessario sovrascrivere un file esistente, creare una bitmap separata dalla bitmap esistente e quindi eliminare la vecchia bitmap, che sbloccherà il file immagine. È ora possibile apportare le modifiche necessarie alla nuova bitmap e salvare la nuova bitmap con il nome del file immagine originale.
- Salva in un flusso di memoria “intermedio”. Il codice
Memory /FileStream
vsbitmap.Save(...)
, sebbene controintuitivo, dovrebbe funzionare con lievi variazioni per tenere conto della chiamata di un metodo particolare.
Si noti che il blocco sottostante del file viene rilasciato solo quando l’oggetto Bitmap viene eliminato: una volta rilasciato il blocco, è possibile sovrascriverlo.
3] Devi sbarazzarti delle tue immagini, perché se ti affidi al Garbage Collector per trovarle in tempo e rilasciare risorse GDI non gestite, probabilmente otterrai un’eccezione. Inoltre, durante la scrittura del codice, prestare attenzione ai seguenti punti:
ConvertTo
Sembra uno spreco, usalo se necessario.- Se devi concatenare percorsi, usa
Path.Combine
. - Usa l’interpolazione delle stringhe invece di sommare le stringhe.
- Se hai bisogno di sfuggire a un carattere, come una barra rovesciata, usa Verbatim String Literal @”…”.
- Preferisci sempre
using
un operatore che non dimentichi mai di eliminare un oggetto, anche se il codice genera un’eccezione.
4] Nessuna autorizzazione per scrivere nella cartella durante il salvataggio del file, soprattutto se viene visualizzato un errore sul sito Web perché il sito Web è in esecuzione con autorizzazioni limitate. In un’applicazione Web, il pool di applicazioni o l’account che esegue il sito Web deve avere accesso in scrittura alla cartella in cui salvare il file, quindi assicurati che la cartella in cui stai tentando di salvare il file sia scrivibile. Ad esempio, se stai utilizzando il sito Web con un account DefaultAppPool
, devi concedere IIS AppPool\DefaultAppPool
all’utente le autorizzazioni di scrittura per la cartella.
5] Se si utilizza Azure e viene visualizzato un errore generico in GDI+ quando si apre una bitmap solo su un server Web remoto e non sul computer di prova locale, GDI+ potrebbe essere presente sui server di Azure IIS. non è in grado di gestire i nuovi formati BMP creati da GIMP. In tal caso, eseguire una delle seguenti operazioni per risolvere il problema:
- Salva di nuovo il BMP con Paint.
- Usa invece un PNG non compresso.
- Salva come BMP a 24 bit con GIMP. Questo metodo darà una scarsa qualità.
6] Questo messaggio di errore viene visualizzato se il percorso in cui si sta navigando Bitmap.Save()
non è valido (la cartella non esiste, ecc.). In poche parole, stai scrivendo il percorso sbagliato per salvare l’immagine. In questo caso, assicurati di correggere il percorso di salvataggio e assicurati che il tuo percorso includa anche il nome del file.
7] Se il file bitmap esisteva già nell’unità di sistema e l’applicazione ha restituito un errore, attenersi alla seguente procedura:
- Assicurati che la cartella di destinazione esista.
- Assicurati che la cartella di destinazione non contenga già un file con quel nome.
- Verifica l’autorizzazione della cartella in cui l’immagine è salvata sull’unità locale. A tale scopo, fai clic con il pulsante destro del mouse sulla cartella, quindi seleziona Proprietà > Sicurezza > Modifica > Aggiungi : seleziona Tutti e seleziona la casella Consenti controllo completo .
Come risolvere l’errore generale in GDI+ in C#?
Se ricevi un errore generale verificatosi in GDI+ in C#, è possibile che il file bitmap che stai tentando di salvare esiste già nell’unità di sistema. In questo caso, puoi assicurarti che la cartella di destinazione esista e che non abbia già un file con lo stesso nome.
Che cos’è un errore GDI+?
GDI+ genera un errore quando non può salvare i file, in genere per i due motivi più comuni. Uno dei motivi è che quando si inizializza un oggetto Bitmap da un’immagine archiviata sul disco rigido, viene creato un blocco sul file immagine sottostante. A causa del blocco, quando si tenta di salvare e sovrascrivere una bitmap modificata, viene generato questo errore.
Come riparare le finestre GDI?
Per correggere l’errore GDI+ Windows sul tuo dispositivo, controlla se i seguenti suggerimenti funzionano:
- Esegui una scansione SFC in un prompt dei comandi con privilegi elevati.
- Esegui lo strumento di risoluzione dei problemi di alimentazione.
- Aggiorna il driver della tua scheda video.
- Controlla Windows Update.
- Avvia il computer in modalità di avvio pulito.
Che cos’è GDI sul mio laptop?
GDI consente agli sviluppatori di applicazioni di visualizzare le informazioni su uno schermo o una stampante senza preoccuparsi dei dettagli del dispositivo di visualizzazione specifico. Lo sviluppatore dell’applicazione chiama i metodi forniti dalle classi GDI+ e questi metodi, a loro volta, effettuano le chiamate appropriate a driver di periferica specifici. GDI+ isola l’applicazione dall’hardware grafico ed è questo isolamento che consente agli sviluppatori di creare applicazioni indipendenti dal dispositivo.
Windows utilizza ancora GDI?
Con l’avvento di Windows XP, GDI è stato deprecato a favore del suo successore, il sottosistema GDI+ basato su C++. Sebbene GDI+ sia incluso in Windows XP e versioni successive, la DLL GDI+ può anche essere fornita con un’applicazione e utilizzata nelle versioni precedenti di Windows.
Fonte: The Windows Club
Lascia un commento