GDI+ 中出現一般性錯誤 [已修復]

當您嘗試修改位圖對象、保存圖像或將圖像上傳到 Web 服務器時,您可能會收到錯誤消息GDI+ 中發生一般性錯誤. 無論使用何種應用程序,都可能發生該錯誤。 這篇文章提供了受影響的用戶可以用來解決問題的最適用的解決方案。

什麼是 GDI+?

Windows GDI+ 提供二維矢量圖形、圖像和排版,充當應用程序和設備驅動程序之間的中間層,用於呈現二維圖形、圖像和文本。 GDI+ 改進了Windows 圖形設備接口 (GDI)(Windows 早期版本中包含的圖形設備界面)通過添加新功能和優化現有功能。 換句話說,GDI+ 是 Windows 的一個圖形子系統,由一個應用程序編程接口 (API) 組成,用於在視頻屏幕和打印機上顯示圖形和格式化文本。

GDI+ 中發生一般性錯誤

錯誤 A generic error occurred in GDI+ 非常普遍,因為異常沒有提供任何細節。 但是,如果您遇到此問題,下面提供的建議應該可以幫助您解決問題,具體取決於您的案例場景或您執行的任務。

1]重新啟動目標環境,然後重複您正在執行的操作。 這適用於正在部署驗收應用程序或將驗收應用程序移至生產環境的受影響用戶。

二]發生此錯誤的原因是當您嘗試保存和覆蓋修改後的位圖時設置了“鎖定”,因為當您從存儲在硬盤驅動器上的圖像初始化位圖對象時,您在底層圖像文件上創建了一個鎖。 換句話說,當從文件構造位圖對像或圖像對象時,文件在對象的生命週期內保持鎖定狀態。 因此,您無法更改圖像並將其保存回原始文件。 在這種情況下,要解決該問題,請執行以下操作之一:

  • 不要覆蓋文件,而是使用與原始文件不同的名稱保存一個新文件。
  • 如果必須覆蓋現有文件,請從現有位圖對象創建一個單獨的位圖對象,然後處理舊位圖對象,這將釋放對圖像文件的鎖定。 現在您可以對新位圖對象進行必要的更改並使用原始圖像文件名保存新位圖對象。
  • 保存到“中間人”內存流。 這 Memory /FileStream 反對 bitmap.Save(...) 該代碼雖然違反直覺,但應該通過微小的變化來處理任何特定的方法調用。

請注意,只有當位圖對像被移除時,文件上的底層鎖才會被移除; 刪除鎖後,您可以覆蓋它。

: 使用 ThisIsMyFile 在 Windows 中解鎖或刪除鎖定或受保護的文件

3]您應該擺脫您的圖像,因為如果您依靠垃圾收集器及時找到它們並釋放非託管 GDI 資源,您可能會遇到異常。 另外,在編寫代碼時請注意以下幾點:

  • ConvertTo 看起來很浪費,如果必須的話就施放。
  • 如果您需要合併路線,請使用 Path.Combine .
  • 使用字符串插值而不是添加字符串。
  • 如果需要轉義反斜杠等字符,請使用 Verbatim String Literal @"..."。
  • 始終鼓勵使用 using 永遠不會忘記處理對象的語句,即使代碼拋出異常也是如此。

: 所有程序員都應遵循的最佳編程原則和指南

4]保存文件時沒有對該文件夾的寫入權限,尤其是當您因網站運行權限受限而出現網站錯誤時。 在 Web 應用程序中,運行網站的應用程序池或帳戶必須對保存文件的文件夾具有寫入權限,因此請確保您嘗試將文件保存到的文件夾是可寫的。 例如,如果您正在運行一個網站 DefaultAppPool 你必須分配 IIS AppPoolDefaultAppPool 用戶對該文件夾的寫入權限。

: 網站請求允許在計算機上存儲數據以供離線使用

5]如果您正在運行 Azure 並收到錯誤 A generic error occurred in GDI+ while opening a bitmap only on a remote web server, not on your local test machine,可能是 Azure 的 IIS 服務器上的 GDI+ 不能。 不處理 GIMP 生成的新 BMP 格式。 如果您遇到這種情況,要解決該問題,請執行以下任一操作:

  • 用 Paint 重新保存 BMP。
  • 請改用未壓縮的 PNG。
  • 使用 GIMP 另存為 24 位 BMP。 這種方法會產生較差的質量。

: Paint 3D 未保存; 它不顯示導出選項

6]如果您傳遞給的路線,則會顯示此錯誤消息 Bitmap.Save() 無效(文件夾不存在等)。 簡而言之,您鍵入了錯誤的路徑來保存圖像。 在這種情況下,請確保您更正保存路徑並且您的路徑還包括文件名。

7]如果系統驅動器上已存在位圖圖像文件並且您的應用程序拋出錯誤,請執行以下操作:

  • 驗證目標文件夾是否存在。
  • 確認目標文件夾中沒有同名文件。
  • 檢查本地驅動器上保存圖像的文件夾的權限。 為此,請右鍵單擊該文件夾,然後導航至特性>安全>編輯>添加– 選擇全部並勾選允許完全控制.

: 如何在 Windows 中獲得文件和文件夾的完全所有權

我希望你覺得這篇文章有用!

如何解決 C# 中 GDI+ 中發生的一般性錯誤?

如果在 C# 中的 GDI+ 中出現一般性錯誤,可能是因為您嘗試保存的位圖圖像文件已存在於系統驅動器上。 在這種情況下,您可以驗證目標文件夾是否存在以及目標文件夾中不存在同名文件。

: Windows 上的父進程消息中出現 JavaScript 錯誤

什麼是 GDI+ 錯誤?

GDI+ 在無法保存文件時拋出錯誤,通常是由於兩個最常見的原因。 一個原因是,當您從存儲在硬盤驅動器上的圖像初始化位圖對象時,您在底層圖像文件上創建了一個鎖。 由於當您嘗試保存和覆蓋修改後的位圖時崩潰,它會拋出此錯誤。

如何修復 GDI 窗口?

要修復您設備上的 Windows GDI+ 錯誤,請查看以下建議是否有效:

  • 在提升的命令提示符下運行 SFC 掃描。
  • 運行電源故障排除程序。
  • 更新顯卡驅動程序。
  • 檢查 Windows 更新。
  • 以乾淨啟動方式啟動計算機。

: 修復 gdi32full.dll 在 Windows 中找不到或丟失的錯誤

我的筆記本電腦上的 GDI 是什麼?

GDI 允許應用程序程序員在屏幕或打印機上顯示信息,而不必擔心特定顯示設備的細節。 應用程序程序員調用 GDI+ 類提供的方法,而這些方法又對特定的設備驅動程序進行適當的調用。 GDI+ 將應用程序與圖形硬件隔離開來,正是這種隔離允許開發人員創建與設備無關的應用程序。

Windows 是否仍然使用 GDI?

隨著 Windows XP 的推出,GDI 被棄用,取而代之的是它的後繼者,即基於 C++ 的 GDI+ 子系統。 雖然 GDI+ 包含在 Windows XP 及更高版本中,但 GDI+ 動態庫也可以隨應用程序一起提供並在早期版本的 Windows 中使用。

: 文件 Ntdll.dll、Advapi32.dll、Gdi32.dll 的說明。

相關文章