我使用下面的代碼來顯示已從我的asp.net mvc(C#)應用程序中保存在我的數據庫中的圖像。「顯示上傳圖像時出現GDI +的一般錯誤」錯誤
public ActionResult GetSiteHeaderLogo()
{
SiteHeader _siteHeader = new SiteHeader();
Image imgImage = null;
long userId = Utility.GetUserIdFromSession();
if (userId > 0)
{
_siteHeader = this.siteBLL.GetSiteHeaderLogo(userId);
if (_siteHeader.Logo != null && _siteHeader.Logo.Length > 0)
{
byte[] _imageBytes = _siteHeader.Logo;
if (_imageBytes != null)
{
using (System.IO.MemoryStream imageStream = new System.IO.MemoryStream(_imageBytes))
{
imgImage = Image.FromStream(imageStream);
}
}
string sFileExtension = _siteHeader.FileName.Substring(_siteHeader.FileName.IndexOf('.') + 1,
_siteHeader.FileName.Length - (_siteHeader.FileName.IndexOf('.') + 1));
Response.ContentType = Utility.GetContentTypeByExtension(sFileExtension.ToLower());
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BufferOutput = false;
if (imgImage != null)
{
ImageFormat _imageFormat = Utility.GetImageFormat(sFileExtension.ToLower());
imgImage.Save(Response.OutputStream, _imageFormat);
imgImage.Dispose();
}
}
}
return new EmptyResult();
}
它工作正常,當我上傳原始圖像。但是,當我上傳任何下載的圖像,它會引發以下錯誤:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(Stream stream, ImageFormat format)
對於。例如:當我上傳原始圖像時,它在我的網站上顯示爲徽標,我從該網站下載了該徽標,當我重新上傳相同的下載圖像時,會引發上述錯誤。這對我來說似乎很奇怪,而且無法找到它發生的原因。對此有何想法?
代碼「imgImage = new Image(Image.FromStream(imageStream));」給出錯誤。 =不能創建抽象類或接口的實例'System.Drawing.Image' – Prasad 2010-06-11 03:59:37
對不起。當然是位圖。 :-( – 2010-06-11 08:55:25
imgImage = new Bitmap(Image.FromStream(imageStream));工作完美。另外當我使用「imgImage.Save(Response.OutputStream,_imageFormat);」內部「使用」我的現有代碼的方法,它的工作。 – Prasad 2010-06-13 02:00:05