首頁 > 後端開發 > C++ > 為什麼將 JPEG 轉換為 MemoryStream 會拋出「GDI 中發生一般錯誤」異常?

為什麼將 JPEG 轉換為 MemoryStream 會拋出「GDI 中發生一般錯誤」異常?

Barbara Streisand
發布: 2025-01-26 15:31:09
原創
225 人瀏覽過

Why Does Converting a JPEG to a MemoryStream Throw a

JPEG期間

gdi錯誤到MemoryStream轉換

>

> exudy:

>使用ConvertImageToByteArray(或類似方法)將JPEG圖像轉換為存儲器流,導致通用GDI錯誤:

<code>System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.</code>
登入後複製

這個問題只會影響JPEG; PNG轉換無問題。

根本原因:

>

錯誤源於在保存圖像之前過早關閉用於創建圖像對象的內存流。 >分辨率:

解決方案是在整個圖像保存過程中保持內存流的打開:>

>

進一步注意:

<code class="language-csharp">using (var m = new MemoryStream())
{
    dst.Save(m, format);
    // ... other code ...
    return Image.FromStream(m); // MemoryStream remains open until the end of the using block
}</code>
登入後複製
使用內存流對於保留圖像的MIME類型至關重要。 沒有它,輸出圖像的MIME類型是未定義的,會使通用錯誤處理複雜。

以上是為什麼將 JPEG 轉換為 MemoryStream 會拋出「GDI 中發生一般錯誤」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板