c# -输出图像响应输出流给出GDI+错误
本文关键字:GDI+ 错误 输出流 响应 输出 图像 | 更新日期: 2023-09-27 17:49:39
将图像输出到输出流时,是否需要临时存储?我得到"通用GDI+"错误,通常与文件夹权限错误相关联时,将图像保存到文件。
我对图像所做的唯一事情是添加一些文本。即使我直接输出图像而不进行修改,我仍然会得到错误。例如,这样做会给我错误:
using (Bitmap image = new Bitmap(context.Server.MapPath("images/stars_5.png")))
{
image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
}
在我的本地机器上运行Windows 7, IIS 7.5和ASP。NET 2.0。该问题发生在运行Windows server 2003、IIS 6和ASP的QA服务器上。NET 2.0 .
给出错误的那行是:
image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
下面是堆栈跟踪:
[ExternalException (0x80004005): A generic error occurred in GDI+.]
System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams) +378002
System.Drawing.Image.Save(Stream stream, ImageFormat format) +36
GetRating.ProcessRequest(HttpContext context) in d:'inetpub'wwwroot'SymInfoQA'Apps'tools'Rating'GetRating.ashx:54
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
png(和其他格式)需要保存到一个可搜索的流。使用中间的MemoryStream
可以达到这个目的:
using (Bitmap image = new Bitmap(context.Server.MapPath("images/stars_5.png")))
{
using(MemoryStream ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.WriteTo(context.Response.OutputStream);
}
}
我只想补充一句:
Response.ContentType = "image/png";
所以当它不在img
标签内时,它可以直接在浏览器中查看