博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法
阅读量:6995 次
发布时间:2019-06-27

本文共 653 字,大约阅读时间需要 2 分钟。

偶原来的用生成验证码图片时用的是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流。

转载地址:http://xqivl.baihongyu.com/

你可能感兴趣的文章
二分法原理
查看>>
sqlserver2008 服务登录失败问题总结
查看>>
阅读笔记15
查看>>
(贪心)多机调度问题
查看>>
红楼女梦
查看>>
论近年来IT媒体的怪现象
查看>>
python基础--------面向对象进阶
查看>>
Python之文件操作
查看>>
c语言静态变量和静态函数
查看>>
从零开始--系统深入学习android(实践-让我们开始写代码-新手指南-4.Activity的生命周期)...
查看>>
根据打印机名称返回打印机任务方法
查看>>
SQL 2012 Restore HeaderOnly
查看>>
二叉树后序遍历算法实现
查看>>
C++对象模型6--对象模型对数据访问的影响
查看>>
2-SAT
查看>>
C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面
查看>>
mysql+php+pdo批量添加大数据
查看>>
集合的基本操作
查看>>
网易有道2017内推编程题2
查看>>
#计算1~100之间偶数的累积和(包含1和100)(回炉练习)
查看>>