ASP.NET產生PNG圖片

來源:互聯網
上載者:User

原來用ASP.NET產生驗證碼圖片時用的是JPG格式,想把它改成PNG格式的,結果就出現GDI+一般性錯誤,查了N久資料,才發現解決的辦法,對分享此解決辦法的網友深表感謝,以下是原文:

 

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.