亲爱的专家我在保存图片时遇到错误,代码如下
ClsImageManager objImgManager = new ClsImageManager();
Bitmap ImageBitmap = objImgManager.GetBitmapFromBytes(ImageData);
Response.ContentType = "image/tiff";
ImageBitmap.Save(Response.OutputStream, ImageFormat.Tiff);
ImageBitmap.Dispose();
Response.End();
当我使用Image.format.jpeg时,代码运行良好但是当我将其更改为ImageFormat.Tiff时,我收到错误 gdi +中发生了一般错误。
答案 0 :(得分:4)
您应该注意到ASP.NET中没有正式支持GDI / GDI +(System.Drawing
名称空间) - 请参阅http://msdn.microsoft.com/en-us/library/system.drawing.aspx中的“注意”。
应该使用WIC代替GDI +(参见http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx)
说,很多人已经在ASP.NET中成功使用了GDI +。最有可能的是,您应该尝试将图像保存到内存流(或文件中),然后将保存的图像写入响应中。有关详细信息,请参阅此链接:http://www.west-wind.com/weblog/posts/2006/Oct/19/Common-Problems-with-rendering-Bitmaps-into-ASPNET-OutputStream
另一种解决方法可能与用户帐户有关。显然,GDI / GDI +绑定到设备上下文(屏幕,打印机等),它们可能在服务帐户下不可用。因此,如果有帮助,您可以尝试在某个普通用户帐户上运行ASP.NET代码。
答案 1 :(得分:2)
您可能需要尝试明确编码图像保存
请查看Image.Save上此MSDN文档底部的代码示例
Image.Save Method (String, ImageCodecInfo, EncoderParameters)
相同的操作可以应用于您的保存。
但是,也可能是您的objImgManager在保存图像之前处理存储图像的缓冲区。
Bitmap ImageBitmap = objImgManager.GetBitmapFromBytes(ImageData);
您可以通过以下方式创建图像副本来解决此问题:
Bitmap ImageBitmap = new Bitmap(objImgManager.GetBitmapFromBytes(ImageData));