生成缩略图后,再对这张图片操作,就出错:该进程无法访问文件“”,因为该文件正由另一进程使用。
代码如下://从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);......//结束
bitmap.Dispose();
image.Dispose();
g.Dispose();是否没有完全释放资源?
代码如下://从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);......//结束
bitmap.Dispose();
image.Dispose();
g.Dispose();是否没有完全释放资源?
解决方案 »
- Repeater中如何判断是第一条记录,这个Repeater是写在JS中的
- 高手进,有点偏的问题。
- SQL Server中表dtA是表dtB和表dtC的主键表,请问高手几个问题
- Application_Error中设置session,但是在转向的错误页面(error.aspx)无法获取该session值?为什么?谢谢!
- asp.net 的 dateGrid 显示图片
- Asp.Net 点击button后,父Panel动态加载了子Panel,然后执行子Panel中的dropdownlist的SelectedIndexChanged事件后页面刷新,父Panel中的
- System.InvalidOperationException: 客户端发现响应内容类型为“”,但应为“text/xml”。
- 问一个个人认为挺有难度的问题,思归斑竹还有其他高手有控来看看
- c#读取远程XML,并显示。(新手救源码)
- webconfig中设置页面转向的问题
- asp.net 中用户登入窗口的问题
- 点击动态载入用户控件中的按钮后,用户控件从页面上消失
bitmap.Dispose();
image.Dispose();
g.Dispose();
这几句释放的是图像处理相关的资源,
但你的图像是怎么保存的??
应当用Stream了吧,看看那个Stream是不是正常关闭了,否则,再操作时肯定会"该进程无法访问文件,因为该文件正由另一进程使用"的,
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布(指定边沿颜色)
g.Clear(Color.White);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);请指点一下
再生成图象
/// 装载图片并且防止图片被锁定
/// http://support.microsoft.com/kb/311754/EN-US/
/// </summary>
/// <param name="fileName">图片文件</param>
/// <returns>返回装载的图片对象</returns>
public static Image LoadImage(string fileName)
{
using(FileStream stream = new FileStream(
fileName, FileMode.Open, FileAccess.Read))
{
using(BinaryReader reader = new BinaryReader(stream))
{
// 取得所有的图片数据
byte[] buffer = new byte[stream.Length];
reader.Read(buffer, 0, (int)stream.Length); // 然后创建一个内存中的Stream对象去生成图片
// 这样文件就不会被锁定了
using(MemoryStream ms = new MemoryStream(buffer))
{
return Image.FromStream(ms);
}
}
}
}
http://www.chinamacro.com/blog/visit_detail.aspx?blogID=46