ASP.NET輸出PNG圖片時出現GDI+一般性錯誤的解決方案

來源:互聯網
上載者:User

以下是原文:
Code: 複製代碼 代碼如下:Response.Clear();
Response.ContentType = "image/PNG";
img.Save(Response.OutputStream, ChartFormat.Png);

竟然出現異常,是GDI+一般性錯誤。但是如果格式是
Code: 複製代碼 代碼如下:Response.ContentType = "image/jpeg";

就不會報錯。
好在以前遇到過,改成
Code: 複製代碼 代碼如下:Response.ContentType = "image/PNG";
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ChartFormat.Png);
Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);
}

就可以輸入png圖片了。
這是由於Response.OutputStream這個流的無法往回讀取造成的,也就是它的CanSeek屬性
是false。png映像產生的時候不像jpeg,不是流式的,已經寫入的就不再管了,而是需要往回
不斷地寫入結構資料。但是response流無法往回seek,所以直接用就不行了。改成一個可以
seek的MemoryStream,先產生好png圖片,然後再輸出到response流。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.