ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法

偶原来的用ASP.NET生成验证码图片时用的是JPG格式,今天想把它改成PNG格式的,结果就出现GDI+一般性错误,查了N久资料,才发现解决的办法,对分享此解决办法的网友深表感谢

Response.Clear();
Response.ContentType = "image/PNG";
img.Save(Response.OutputStream, ChartFormat.Png);
竟然出现异常,是GDI+一般性错误。但是如果格式是Response.ContentType = "image/jpeg";
就不会报错。

好在以前遇到过,改成
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流。

ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法

时间: 2024-10-12 10:11:47

ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法的相关文章

MVC.Net:对MVC5部署时出现403.14错误的解决方法

当我们部署MVC5到IIS 7的时候,有时会出现403.14的错误,如下图: 对于这个错误的解决方法就是在应用程序的web.config的system.webServer节点中加入这一句: <modules runAllManagedModulesForAllRequests="true"></modules> 如下例: <system.webServer> <!-- 此行必须有,否则IIS7无法启动 --> <modules ru

用vim编辑文件时出现E325: ATTENTION错误的解决方法

当用vim编辑一个文件时出现下列错误 [[email protected] ~]# vim /usr/local/msmtp/etc/msmtprc E325: ATTENTIONFound a swap file by the name "/usr/local/msmtp/etc/.msmtprc.swp"          owned by: root   dated: Thu May 22 15:47:09 2014         file name: /usr/local/m

ios 开发中 --做登陆注册时编译出现的错误和解决方法

这种问题,通常出现在添加第三方库文件或者多人开发时. 这种问题一般是找不到文件而导致的链接错误. 我们可以从如下几个方面着手排查. 1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误. 这个是使用CocoaPods下载的BmobSDK 实现注册时出现的错 解决方法:(图示) Undefined symbols for architecture armv7: "_OBJC_CLASS_$_MyPageLogViewController", referenced from:

【原创】关于QT Creator编译程序时遇到几个错误的解决方法

1.mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall QwtPlot::QwtPlot(class QWidget *)" ([email protected]@[email protected]@@@Z),该符号在函数 "public: void __thiscall Ui_MainWindow::setupUi 这样的错误: 解决方法:1.执行  创建--->执行qmake 2.没有添加

elasticsearch启动时提示内存不足错误的解决方法

修改 jvm空间分 cd到elasticsearch目录 vim config/jvm.options 修改: -Xms2g -Xmx2g 为 -Xms256m -Xmx256m 本人主机内存为1G 原文地址:https://www.cnblogs.com/dbSyk/p/10090774.html

asp.net中当服务器出错时显示指定的错误页面

http://blog.csdn.net/helloxiaoyu/article/details/2943537 此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常.ASP.NET在异常处理方面比传统的ASP更优越.在ASP.NET中,允许在应用程序的各个层面中处理异常.ASP.NET的新特性ASP.NET为捕获并处理异常提供了更多的便利.在传统的ASP程序中,我们用“On Error Resume Next”(或Jscript的Try-catch)来处理异常.

GDI+中发生一般性错误的解决办法(转载)

今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误"的异常.于是开始"摆渡",并寻找到了解决办法:赋予 NETWORK SERVICE 帐户以写权限. 以下为晚上寻找到的资料: 在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致"GDI+ 中发生一般性错误"的发生,通常有以下三种

asp.net下ueditor上传大容量视频报http请求错误的解决方法

故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报“http请求错误”的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.json编辑器文件夹中的配置文件config.json在其中查找"videoMaxSize": 1024000000, /* 上传大小限制,单位B,默认1GBB */ 这是我修改后的参数: 2:在web.co

ASP.NET MVC 3 loginUrl自动变成Account/Login,并且发生404错误的解决方法

http://www.cnblogs.com/think8848/archive/2011/07/08/2100814.html ASP.NET MVC 3 loginUrl自动变成Account/Login,并且发生404错误的解决方法 在ASP.NET中使用 <authentication mode="Forms">时,如果在forms配置节中,没有指定loginUrl,那么根据MSDN上的说法,默认值是login.aspx,在指定loginUrl时,就使用指定的Url