程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> ASP.NET生成PNG圖片 代碼

ASP.NET生成PNG圖片 代碼

編輯:關於C#
 

原來用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流。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved