GDI+ 中的一般錯誤 [已修復]

GDI+ 中的一般錯誤 [已修復]

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

什麼是 GDI+?

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

GDI+ 中的一般錯誤

GDI+ 錯誤引發的一般錯誤非常一般,因為該異常沒有提供任何詳細信息。但是,如果您遇到此問題,以下建議應該可以幫助您解決問題,具體取決於您的場景或您已完成的任務。

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

2]由於在嘗試保存和覆蓋修改的位圖時設置了“鎖定”,可能會發生此錯誤,因為當您從存儲在硬盤驅動器上的圖像初始化位圖對象時,它會在基礎圖像文件上創建一個鎖定。換句話說,當從文件創建位圖對像或圖像對象時,文件在對象的持續時間內保持鎖定狀態。因此,您無法更改圖像並將其保存回創建它的同一文件。在這種情況下,請執行以下操作之一來解決問題:

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

請注意,文件的底層鎖僅在 Bitmap 對像被刪除時才被釋放——一旦鎖被釋放,您就可以覆蓋它。

3]你需要把你的圖片丟掉,因為如果你依賴垃圾收集器及時找到它們並釋放非託管的GDI資源,你可能會得到一個異常。另外,寫代碼的時候要注意以下幾點:

  • ConvertTo它看起來很浪費,如果需要,請使用它。
  • 如果您需要連接路徑,請使用Path.Combine.
  • 使用字符串插值而不是將字符串添加在一起。
  • 如果您需要轉義字符,例如反斜杠,請使用逐字字符串文字@“…”。
  • using即使代碼拋出異常,也始終支持永遠不會忘記處置對象的運算符。

4]保存文件時沒有寫入文件夾的權限,特別是如果您在網站上遇到錯誤,因為該網站以有限的權限運行。在 Web 應用程序中,運行網站的應用程序池或帳戶必須對保存文件的文件夾具有寫入權限,因此請確保您嘗試保存文件的文件夾是可寫的。例如,如果您使用帳戶下的網站DefaultAppPool,則必須授予IIS AppPool\DefaultAppPool用戶對該文件夾的寫入權限。

5]如果您使用 Azure,並且當您僅在遠程 Web 服務器上而不是在本地測試機器上打開位圖時在 GDI+ 中出現一般錯誤,則 GDI+ 可能存在於 Azure IIS 服務器上。無法處理由 GIMP 創建的新 BMP 格式。如果是這樣,請執行以下操作之一來解決問題:

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

6]如果您導航Bitmap.Save()到的路徑無效(文件夾不存在等),則會顯示此錯誤消息。簡而言之,您正在編寫錯誤的路徑來保存圖像。在這種情況下,請務必更正保存路徑並確保您的路徑還包含文件名。

7]如果系統驅動器上已經存在位圖文件並且您的應用程序出錯,請按照下列步驟操作:

  • 確保目標文件夾存在。
  • 確保目標文件夾還沒有具有該名稱的文件。
  • 檢查圖像保存在本地驅動器上的文件夾的權限。為此,請右鍵單擊該文件夾,然後選擇屬性>安全>編輯>添加– 選擇所有人並選中允許完全控制框。

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

如果您在 C# 中的 GDI+ 中出現一般錯誤,可能是因為您嘗試保存的位圖文件已存在於您的系統驅動器上。在這種情況下,您可以確保目標文件夾存在並且它還沒有同名的文件。

什麼是 GDI+ 錯誤?

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

如何修復 GDI 窗口?

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

  • 在提升的命令提示符下運行 SFC 掃描。
  • 運行電源疑難解答。
  • 更新您的視頻卡驅動程序。
  • 檢查 Windows 更新。
  • 以乾淨啟動模式啟動計算機。

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

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

Windows 還在使用 GDI?

隨著 Windows XP 的出現,GDI 已被棄用,取而代之的是其繼任者,即基於 C++ 的 GDI+ 子系統。儘管 GDI+ 包含在 Windows XP 和更高版本中,但 GDI+ DLL 也可以隨應用程序一起提供並用於早期版本的 Windows。

資料來源:Windows 俱樂部

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *