问题场景: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解决办法的更多相关文章

  1. asp.net EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法

    出现的错误信息如下所示: 指定的架构无效.错误:  DataModel.ssdl(2,2) : 错误 0152: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提 ...

  2. Activiti保存流程图时diagrms中没有生成png解决办法

    window ——> preferences——>activiti——>save——>选中create process definition image when saving ...

  3. EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法

    在多工程项目中,由于EF封装在某一个工程里,那么该项目用于EF相关类库 EntityFramework.dll,以及EntityFramework.SqlServer.dll的引用 那么你一个启动工程 ...

  4. 使用System.Drawing.Imaging.dll进行图片的合并

    在最近开发项目的时候有时候需要进行图片的合并,即将两张图片合并成功一张图片 合并图片的代码: #region 两张图片的合并 /// <summary > /// 将Image对象转化成二 ...

  5. 类库探源——System.Drawing

    一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...

  6. [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 ...

  7. .net学习笔记----利用System.Drawing.Image类进行图片相关操作

    C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...

  8. Asp.Net Core使用System.Drawing.Common部署到docker报错问题

    Asp.Net Core 2.1发布后,正式支持System.Drawing.Common绘图了,可以用来做一些图片验证码之类的功能.但是把网站部署到docker容器里运行会遇到很多问题,也是非常闹心 ...

  9. 把System.Drawing.Image对象img,在页面的Image控件上显示出来

    1.保存到本地,然后调用. //定义文件名    string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...

随机推荐

  1. Zend框架2入门(一) (转)

    By Rob Allen, www.akrabat.com 修订0.1.2文件版权所有? 2011本教程的目的是给创建一个简单的数据库的介绍使用Zend Framework 2驱动的应用程序使用模型 ...

  2. Java编程 的动态性,第 2部分: 引入反射--转载

    在“ Java编程的动态性,第1部分,”我为您介绍了Java编程类和类装入.该篇文章介绍了一些Java二进制类格式的相关信息.这个月我将阐述使用Java反射API来在运行时接入和使用一些相同信息的基础 ...

  3. 大数据笔记04:大数据之Hadoop的HDFS(基本概念)

    1.HDFS是什么? Hadoop分布式文件系统(HDFS),被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点. 2.HDFS ...

  4. Linux network setting.

    Lubuntu network setting. //1. Vi /etc/network/interfaces Add:auto eth0iface eth0 inet dhcp //2. Vi / ...

  5. ls Common Command-Line Options

    ls  Common Command-Line Options Command  Use: ls -l    Shows a long listing, which includes informat ...

  6. 第1章 你真的了解C#吗?

    什么是C#? C#是由微软公司开发的一种面向对象且运行于.Net Framework之上的高级程序设计语言,发布于2000年6月. 什么是.Net Framework 我们可以这样去理解.Net Fr ...

  7. 在Github上面搭建Hexo博客(一):部署到Github

    什么是Hexo Hexo是一个基于Node.js的静态博客程序,可以方便的生成静态网页托管在Github和Heroku上.并且有很多人为其制作了很多优秀的主题(theme),你可以根据自己的喜好进行设 ...

  8. jQuery中使用 .html() function在IE8和9中显示不正常源码中多出sizset和sizcache

    错误原因:在引入jquery的时候,使用了html function,在IE8和IE9下面有可能会出现不兼容 解决办法:在html头部加一句 <meta http-equiv="X-U ...

  9. SQL 语句修改列名 属性 默认值

    --修改字段名exec sp_rename '表名.列名','新列名' --修改字段属性alter table 表名 alter column 列名 nvarchar(100) null; --修改默 ...

  10. [转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile

    http://blog.csdn.net/stpeace/article/details/39534361 进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法. 那么, 在本文中 ...