Ogólny błąd w GDI+ [Naprawiono]
Podczas próby zmodyfikowania obiektu bitmapowego, zapisania lub przesłania obrazu na serwer sieci Web może zostać wyświetlony komunikat o błędzie Wystąpił błąd ogólny w GDI+ . Błąd może wystąpić niezależnie od używanej aplikacji. Ten post zawiera najbardziej odpowiednie rozwiązania, które użytkownicy, których dotyczy problem, mogą zastosować, aby rozwiązać problem.
Co to jest GDI+?
Windows GDI+ udostępnia grafikę wektorową 2D, obrazy i typografię, działając jako warstwa pośrednia między aplikacjami i sterownikami urządzeń do renderowania grafiki, obrazów i tekstu 2D. GDI+ ulepsza interfejs urządzenia graficznego systemu Windows (GDI) (interfejs urządzenia graficznego zawarty we wcześniejszych wersjach systemu Windows), dodając nowe funkcje i optymalizując istniejące. Innymi słowy, GDI+ to podsystem graficzny systemu Windows, który składa się z interfejsu programowania aplikacji (API) do wyświetlania grafiki i tekstu sformatowanego zarówno na wyświetlaczu wideo, jak i na drukarce.
Ogólny błąd w GDI+
Ogólny błąd zgłoszony przez błąd GDI+ jest bardzo ogólny, ponieważ wyjątek nie zawiera żadnych szczegółów. Jeśli jednak napotkasz ten problem, poniższe sugestie powinny pomóc w rozwiązaniu problemu w zależności od scenariusza lub wykonanego zadania.
1] Uruchom ponownie środowisko docelowe, a następnie powtórz akcję, którą śledziłeś. Zadziałało to w przypadku dotkniętych użytkowników wdrażających lub przenoszących aplikacje z wdrożenia do produkcji.
2] Ten błąd może wystąpić z powodu ustawienia „blokady” podczas próby zapisania i zastąpienia zmodyfikowanej mapy bitowej, ponieważ podczas inicjowania obiektu Bitmap z obrazu przechowywanego na dysku twardym tworzy blokadę na podstawowym pliku obrazu. Innymi słowy, gdy obiekt Bitmap lub Image jest tworzony z pliku, plik pozostaje zablokowany na czas działania obiektu. W rezultacie nie można zmienić obrazu i zapisać go z powrotem w tym samym pliku, w którym został utworzony. W takim przypadku wykonaj jedną z następujących czynności, aby rozwiązać problem:
- Zamiast zastępować plik, zapisz nowy plik pod inną nazwą niż oryginalny plik.
- Jeśli chcesz zastąpić istniejący plik, utwórz oddzielną bitmapę z istniejącej mapy bitowej, a następnie usuń starą bitmapę, co odblokuje plik obrazu. Możesz teraz wprowadzić niezbędne zmiany w nowej bitmapie i zapisać nową bitmapę z oryginalną nazwą pliku obrazu.
- Zapisz w „pośrednim” strumieniu pamięci. Kod
Memory /FileStream
vsbitmap.Save(...)
, choć jest sprzeczny z intuicją, powinien działać z niewielkimi zmianami, aby uwzględnić wywoływanie dowolnej konkretnej metody.
Zwróć uwagę, że podstawowa blokada pliku jest zwalniana tylko po usunięciu obiektu Bitmap — po zwolnieniu blokady możesz ją zastąpić.
3] Musisz pozbyć się swoich obrazów, ponieważ jeśli polegasz na garbage collectorze, aby znaleźć je na czas i zwolnić niezarządzane zasoby GDI, prawdopodobnie otrzymasz wyjątek. Ponadto pisząc kod, zwróć uwagę na następujące punkty:
ConvertTo
Wygląda na marnotrawstwo, po prostu użyj go, jeśli potrzebujesz.- Jeśli chcesz połączyć ścieżki, użyj
Path.Combine
. - Użyj interpolacji ciągów zamiast dodawać ciągi razem.
- Jeśli chcesz zmienić znaczenie znaku, na przykład odwrotnego ukośnika, użyj Verbatim String Literal @”…”.
- Zawsze faworyzuj
using
operatora, który nigdy nie zapomina usunąć obiektu, nawet jeśli kod zgłasza wyjątek.
4] Brak uprawnień do zapisu w folderze podczas zapisywania pliku, zwłaszcza jeśli pojawi się błąd na stronie, ponieważ strona działa z ograniczonymi uprawnieniami. W aplikacji internetowej pula aplikacji lub konto, na którym jest uruchamiany serwis WWW, musi mieć dostęp do zapisu w folderze, w którym ma zostać zapisany plik, więc upewnij się, że folder, w którym próbujesz zapisać plik, jest zapisywalny. Na przykład, jeśli korzystasz z witryny na koncie DefaultAppPool
, musisz przyznać IIS AppPool\DefaultAppPool
użytkownikowi uprawnienia do zapisu w folderze.
5] Jeśli używasz platformy Azure i podczas otwierania mapy bitowej tylko na zdalnym serwerze sieci Web, a nie na lokalnej maszynie testowej, pojawia się błąd ogólny w GDI+, GDI+ może znajdować się na serwerach Azure IIS. nie obsługuje nowych formatów BMP utworzonych przez GIMP. Jeśli tak, wykonaj jedną z poniższych czynności, aby rozwiązać problem:
- Zapisz ponownie BMP za pomocą farby.
- Zamiast tego użyj nieskompresowanego pliku PNG.
- Zapisz jako 24-bitowy BMP z GIMP. Ta metoda da słabą jakość.
6] Ten komunikat o błędzie jest wyświetlany, jeśli ścieżka, do której nawigujesz Bitmap.Save()
, jest nieprawidłowa (folder nie istnieje itp.). Mówiąc najprościej, piszesz złą ścieżkę, aby zapisać obraz. W takim przypadku popraw ścieżkę zapisu i upewnij się, że ścieżka zawiera również nazwę pliku.
7] Jeśli plik mapy bitowej już istniał na dysku systemowym, a aplikacja dała błąd, wykonaj następujące kroki:
- Upewnij się, że folder docelowy istnieje.
- Upewnij się, że w folderze docelowym nie ma już pliku o tej nazwie.
- Sprawdź uprawnienia folderu, w którym obraz jest zapisany na dysku lokalnym. Aby to zrobić, kliknij folder prawym przyciskiem myszy, a następnie wybierz Właściwości > Zabezpieczenia > Edytuj > Dodaj — wybierz Wszyscy i zaznacz pole Zezwól na pełną kontrolę .
Jak rozwiązać ogólny błąd w GDI+ w C#?
Jeśli otrzymujesz błąd ogólny w GDI+ w języku C#, może to być spowodowane tym, że plik mapy bitowej, który próbujesz zapisać, już istnieje na dysku systemowym. W takim przypadku możesz upewnić się, że folder docelowy istnieje i nie zawiera już pliku o tej samej nazwie.
Co to jest błąd GDI+?
GDI+ zgłasza błąd, gdy nie może zapisać plików, zwykle z dwóch najczęstszych powodów. Jednym z powodów jest to, że gdy inicjujesz obiekt Bitmap z obrazu przechowywanego na dysku twardym, tworzy blokadę na podległym pliku obrazu. Z powodu blokady podczas próby zapisania i nadpisania zmodyfikowanej mapy bitowej zgłaszany jest ten błąd.
Jak naprawić okna GDI?
Aby naprawić błąd GDI+ Windows na swoim urządzeniu, sprawdź, czy działają następujące sugestie:
- Uruchom skanowanie SFC w wierszu polecenia z podwyższonym poziomem uprawnień.
- Uruchom narzędzie do rozwiązywania problemów z zasilaniem.
- Zaktualizuj sterownik karty graficznej.
- Sprawdź Windows Update.
- Uruchom komputer w trybie czystego rozruchu.
Co to jest GDI na moim laptopie?
GDI umożliwia twórcom aplikacji wyświetlanie informacji na ekranie lub drukarce bez martwienia się o szczegóły konkretnego urządzenia wyświetlającego. Twórca aplikacji wywołuje metody udostępniane przez klasy GDI+, a te z kolei wykonują odpowiednie wywołania określonych sterowników urządzeń. GDI+ izoluje aplikację od sprzętu graficznego i to właśnie ta izolacja umożliwia programistom tworzenie aplikacji niezależnych od urządzeń.
Windows nadal używa GDI?
Wraz z pojawieniem się systemu Windows XP, GDI zostało przestarzałe na rzecz jego następcy, podsystemu GDI+ opartego na C++. Chociaż GDI+ jest dołączony do systemu Windows XP i nowszych, biblioteka GDI+ DLL może być również dostarczana z aplikacją i używana we wcześniejszych wersjach systemu Windows.
Źródło: Klub Windows
Dodaj komentarz