Image.Save 方法 (String)

将该 Image 保存到指定的文件或流。

命名空间:  System.Drawing
程序集:  System.Drawing(在 System.Drawing.dll 中)

public void Save(
string filename
)

参数

filename
类型:System.String
字符串,包含要将此 Image 保存到的文件的名称。
异常 条件
ArgumentNullException

filename 为 null.。

ExternalException

该图像以错误的图像格式保存。

- 或 -

该图像被保存到创建该图像的文件

如果图像的文件格式的编码器不存在,则使用可移植网络图形 (PNG) 编码器。 使用 Save 方法将图形图像保存为 Windows 图元文件格式 (WMF) 或增强型图元文件格式 (EMF) 文件时,结果文件将另存为可移植网络图形 (PNG) 文件。 发生此行为是由于 .NET Framework 的 GDI+ 组件没有可用来将文件另存为 .wmf 或 .emf 文件的编码器。

不允许将图像保存到构造该图像的文件,这样会引发异常。

Referencehttp://www.codeproject.com/Questions/52709/C-Bitmap-Save-Generic-GDI-Error

这个网页里解释了为什么会出现这样的问题和怎么解决的。

Refernence: 

GDI+中发生一般性错误

Bitmap构造函数

命名空间:  System.Drawing
程序集:  System.Drawing(在 System.Drawing.dll 中)

1.从指定的现有图像初始化 Bitmap 类的新实例

public Bitmap(
Image original
)

参数

original
类型:System.Drawing.Image
从中创建新 Bitmap 的 Image

2.从指定的文件初始化 Bitmap 类的新实例

public Bitmap(
string filename
)

参数

filename
类型:System.String
位图文件的名称和路径。
异常 条件
FileNotFoundException

找不到指定文件。

文件名和路径可以是相对于应用程序的路径或者是绝对路径。 使用此构造函数打开以下文件格式的图像:BMP、GIF、EXIF、JPG、PNG 和 TIFF。 有关支持的格式的更多信息,请参见位图类型。 在释放 Bitmap 之前,此文件将一直保持锁定状态。

Image.FromFile  一旦使用后,对应的文件在一直调用 其生成的Image对象被Disponse前都不会被解除锁定,这就造成了一个问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等操作).

举例代码

第一段代码
Bitmap bmp = new Bitmap("1.bmp");
bmp.save("1.bmp"); //这里抛出异常“GDI+发生一般错误” 第二段代码
Image img = Image.FomFile("1.bmp");
或 Bitmap img = new Bitmap("1.bmp");
Bitmap bmp = new Bitmap(img)
img.Dispose();
bmp.save("1.bmp"); //而这里却不会 原因:第一段就不用多说了,图像被锁定,不能保存同一文件 第二段虽然1.bmp也被锁定了,但是new Bitmap(img)后是一个新的实例,相当于复制了一份图像。img.Dispose将1.bmp接触锁定释放了。

reference:Image.FromFile 方法会锁住文件的原因及可能的解决方法

 

C# Bitmap Save Generic GDI+ Error的更多相关文章

  1. JMeter导入jmx运行脚本时出现这样的错误jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.converters.ConversionException:

    2016/12/20 13:51:55 ERROR - jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.conve ...

  2. WPF GDI+ bitmap.save 一般性错误

    做水印图片的时候,发现WPF的System.Windows.Shapes类有绘制直线,椭圆等形状.却没有绘字符串的类. 无奈之下又用回GDI+ 发生的GDI+一般性错误初步估计的线程的原因. 在loa ...

  3. Image.Save()发生“GDI+ 中发生一般性错误”

    从数据库中读取的图片是byte[]类型,将其转换成Image可以正常显示,但是调用image.Save()时会发生“GDI+ 中发生一般性错误”.public static System.Drawin ...

  4. Image.Save出错 GDI 一般错误

    一般是路径问题 需要转化为绝对路径 \转换为/ if (HttpContext.Current!=null) outPath = HttpContext.Current.Server.MapPath( ...

  5. Exception:A generic error occurred in GDI+

    分析: 一般出现这种问题都是GDI和原数据(比如Bitmap)是同一个实体,只不过是两个引用.换句话说就是这个路径的图片被GDI占用啦. 还有一种情况是路径有问题. 场景一: WPF的Image控件的 ...

  6. COM Error Code(HRESULT)部分摘录

    Return value/code Description 0x00030200 STG_S_CONVERTED The underlying file was converted to compou ...

  7. System Error Codes

    很明显,以下的文字来自微软MSDN 链接http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx M ...

  8. winerror.h中的内容(可以查看last error对应)

    /************************************************************************* ** winerror.h -- error co ...

  9. asp.net GDI+绘制五边形

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

随机推荐

  1. 锁_rac环境kill锁表会话后出现killed状态(解决)

    原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46876961 ra ...

  2. Android Studio导入Project的方法

    Android Studio到现在已经发展到0.8+的版本了,最近也在试着使用它,原因是多方面的,一个毕竟是未来的趋势,二则是github上越来越多的大牛开源项目都是基于Android Studio的 ...

  3. A Flock Of Tasty Sources On How To Start Learning High Scalability

    This is a guest repost by Leandro Moreira. When we usually are interested about scalability we look ...

  4. Java 编程实践

    创建一个54个元素的整数数组,并将其元素值依次赋值为:1~54,用于表示一副牌的54张.再创建一个12个元素的整数数组,用于表示某玩家手中的牌,然后从前一数组中随机抽取12个元素赋值给该数组.打印后一 ...

  5. linux安全

    http://drops.wooyun.org/ 最专业的安全知识分享平台 http://www.freebuf.com/ 关注黑客与极客 http://book.beifabook.com/prod ...

  6. 【转】SVN的UUID错误

    操作TortoiseSVN时,报如下错误:       Command Update       Repository UUID '62b86956-73d9-2945-ba87-0546d71898 ...

  7. Asianux的SSH登录问题,密码不正确解决

    第一.ssh服务默认是关闭的,需要手动打开 [root@Asianux ~]# service sshd start      启动 [root@Asianux ~]#chkconfig sshd - ...

  8. Spring Data Solr教程(翻译) 开源的搜索服务器

    Solr是一个使用开源的搜索服务器,它采用Lucene Core的索引和搜索功能构建,它可以用于几乎所有的编程语言实现可扩展的搜索引擎. Solr的虽然有很多优点,建立开发环境是不是其中之一.此博客条 ...

  9. 数字根(digital root)

    来源:LeetCode 258  Add Dights Question:Given a non-negative integer  num , repeatedly add all its digi ...

  10. 【java】 java 集合类UML图