System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法
问题场景:asp.net给图片添加文字水印保存为jpg格式时出现标题所描述错误(图片为.jpg格式);
简单验证:用本机的画图程序打开,然后保存为jpg格式会出现警告框“画图程序不能存储该文件,保存被中断 所以文件未被保存“

解决代码:
try
{
using (System.Drawing.Image image = System.Drawing.Image.FromFile(@"D:\WWW\test\DownLoad\企业毕业证书.jpg"))
{
#region 解决方案一,移除属性,可以保存为jpeg格式图片
System.Drawing.Imaging.PropertyItem[] pi = image.PropertyItems;
foreach (System.Drawing.Imaging.PropertyItem p in pi)
{
image.RemovePropertyItem(p.Id);
}
#endregion
Response.Write("1" + "\r\n");
//新建一个画板
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(image);
Response.Write("2" + "\r\n");
graphic.DrawImage(image, 0, 0, image.Width, image.Height);
Response.Write("3" + "\r\n");
//设置字体
System.Drawing.Font f = new System.Drawing.Font("宋体", 12);
Response.Write("4" + "\r\n");
//设置字体颜色
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
Response.Write("5" + "\r\n");
graphic.DrawString("2", f, b, 729, 326);
Response.Write("6" + "\r\n");
graphic.DrawString("2013", f, b, 1083, 1325);
graphic.DrawString("12", f, b, 1375, 1325);
graphic.DrawString("2", f, b, 1842, 1325);
graphic.DrawString("99", f, b, 2676, 1325);
graphic.DrawString("13", f, b, 656, 326);
graphic.DrawString("12", f, b, 1083, 1485);
graphic.DrawString("12", f, b, 1375, 1485);
graphic.DrawString("1", f, b, 1928, 1485);
graphic.DrawString("1", f, b, 2735, 1485);
graphic.DrawString("2013", f, b, 2494, 1837);
graphic.DrawString("12", f, b, 2673, 1837);
graphic.DrawString("31", f, b, 2790, 1837);
Response.Write("7" + "\r\n");
//设置字体
System.Drawing.Font f1 = new System.Drawing.Font("宋体", 18);
Response.Write("8" + "\r\n");
graphic.DrawString("2", f1, b, 1412, 988);
graphic.DrawString("test", f1, b, 1471, 1132);
Response.Write("9" + "\r\n");
graphic.Dispose();
Response.Write("10" + "\r\n");
string OutPath = Server.MapPath("UploadImg/毕业证书");
if (!Directory.Exists(OutPath))
{
Response.Write("11" + "\r\n");
Directory.CreateDirectory(OutPath);
}
Response.Write("12" + "\r\n");
string Savepath = Path.Combine(@"D:\WWW\test\UploadImg\毕业证书", "1.JPG");
System.Drawing.Image outimg = image;
Response.Write("13" + "\r\n");
outimg.Save(Savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
#region 解决方案二,保存为png格式图片
outimg.Save(Savepath,System.Drawing.Imaging.ImageFormat.Png);
#endregion
outimg.Dispose();
Response.Write("14" + "\r\n");
Response.Write("15" + "\r\n");
Response.Write(Savepath);
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法的更多相关文章
- asp.net EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法
出现的错误信息如下所示: 指定的架构无效.错误: DataModel.ssdl(2,2) : 错误 0152: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提 ...
- Activiti保存流程图时diagrms中没有生成png解决办法
window ——> preferences——>activiti——>save——>选中create process definition image when saving ...
- EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法
在多工程项目中,由于EF封装在某一个工程里,那么该项目用于EF相关类库 EntityFramework.dll,以及EntityFramework.SqlServer.dll的引用 那么你一个启动工程 ...
- 使用System.Drawing.Imaging.dll进行图片的合并
在最近开发项目的时候有时候需要进行图片的合并,即将两张图片合并成功一张图片 合并图片的代码: #region 两张图片的合并 /// <summary > /// 将Image对象转化成二 ...
- 类库探源——System.Drawing
一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...
- [Tomcat]无法使用tomcat6.exe启动服务解决办法, The system cannot find the Registry key for service 'tomcat7'
重新配置环境变量后,可以使用startup.bat启动服务, 但是无法使用tomcat6.exe启动服务, 错误信息: [2011-03-10 18:51:49] [warn] The system ...
- .net学习笔记----利用System.Drawing.Image类进行图片相关操作
C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...
- Asp.Net Core使用System.Drawing.Common部署到docker报错问题
Asp.Net Core 2.1发布后,正式支持System.Drawing.Common绘图了,可以用来做一些图片验证码之类的功能.但是把网站部署到docker容器里运行会遇到很多问题,也是非常闹心 ...
- 把System.Drawing.Image对象img,在页面的Image控件上显示出来
1.保存到本地,然后调用. //定义文件名 string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...
随机推荐
- <五>读《《大话设计模式》》之工厂模式
怎么又是工厂模式呢?上次不是讲过简单工厂模式吗?不错.此工厂模式非彼工厂模式. 工厂模式:定义一个用于创建对象的接口.让子类决定实例化那一个类,工厂方法是一个类的实例化延迟到其子类. 还是以代码来进行 ...
- linux经常使用命令
linux经常使用命令 pwd 查看当前工作文件夹的绝对路径 cat input.txt 查看input.txt文件的内容 ls 显示当前文件夹下全部的文件及子文件夹 rm recommender-d ...
- 经典C面试题
12个有趣的C语言面试题 面试题C 摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出以下代码里的问题: #include< ...
- 解决从源码编译ncurses6.0编译lib_gen.c报错的问题
直接从官网的源码编译时,会提示报错: gcc -DHAVE_CONFIG_H -I. -I../include -D_GNU_SOURCE -DNDEBUG -O2 --param max-inlin ...
- NYOJ 214 最长上升子序列nlogn
普通的思路是O(n2)的复杂度,这个题的数据量太大,超时,这时候就得用nlogn的复杂度的算法来做,这个算法的主要思想是只保存有效的序列,即最大递增子序列,然后最后得到数组的长度就是最大子序列.比如序 ...
- (转)java 23种设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- linux查询当前进程数的命令
$command = "ps aux | grep 'zb_insure/get_order_info_from_queue.php' | grep -v 'grep' | grep - ...
- 你确定你是一个合格的.Net开发人员吗?
做.net开发已有近5年时间,自认掌握的知识比较全面.最近部门需要招人,今天抽空在网上看了一下,发现我了解的还是不够多啊.下面是我大致的罗列了一下作为一名.Net开发人员所需要掌握的只是.看看你是不是 ...
- 使用三层交换机的ACL实现不同vlan间的隔离
使用三层交换机的ACL实现不同vlan间的隔离 建立三个vlan vlan10 vlan20 vlan30 www.2cto.com PC1 PC3属于vlan10 PC2 PC4属于v ...
- 武汉科技大学ACM:1003: 看美女
Problem Description “排排站,赏美女……” YJ师兄在今年牡丹江赛区人品爆发,怒摘银奖,心情倍好,现组织大家去黄家湖边站成一排看美女 ^.^ N个人站成一排.不巧,美女们只在队伍的 ...