GDI+ 发生一般性错误解决办法
2016-08-08 13:35
330 查看
错误的代码g对象继续占用 未释放资源 如果路径不一样 没问题 相同路径 获取图片进行
缩略会造成GDI错误
缩略会造成GDI错误
/// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <param name="width">缩略图宽度</param> /// <param name="height">缩略图高度</param> public void CreateMinImage(string originalImagePath, string thumbnailPath, int width, int height) { System.Drawing.Image originalImage = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(originalImagePath)); int towidth = width; int toheight = height; int ow = originalImage.Width; int oh = originalImage.Height; //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight); //新建一个画板 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(System.Drawing.Color.Transparent); //在指定位置并且按指定大小绘制原图片的指定部分 g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight)); try { //以jpg格式保存缩略图 string FileExt = Path.GetFileNameWithoutExtension(originalImagePath); //这里报错 bitmap.Save(HttpContext.Current.Server.MapPath(thumbnailPath) + FileExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } catch (System.Exception e) { throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } } //修改后的代码 public void CreateMinImageAndDel(string originalImagePath, string thumbnailPath, int width, int height) { Graphics draw = null; string FileExt = ""; System.Drawing.Image originalImage = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(originalImagePath)); int towidth = width; int toheight = height; int ow = originalImage.Width; int oh = originalImage.Height; //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight); System.Drawing.Image bitmap2 = new System.Drawing.Bitmap(towidth, toheight); //新建一个画板 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(System.Drawing.Color.Transparent); //在指定位置并且按指定大小绘制原图片的指定部分 g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight)); try { //以jpg格式保存缩略图 FileExt = Path.GetFileNameWithoutExtension(originalImagePath); //用新建立的image对象拷贝bitmap对象 让g对象可以释放资源 draw = Graphics.FromImage(bitmap2); draw.DrawImage(bitmap, 0, 0); } catch (System.Exception e) { throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); //保存调整在这里即可 bitmap2.Save(HttpContext.Current.Server.MapPath(thumbnailPath) + FileExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } }
相关文章推荐
- “GDI+中发生一般性错误” 的解决办法!
- GDI+中发生一般性错误的解决办法(转帖)
- GDI+中发生一般性错误的解决办法
- GDI+中发生一般性错误的解决办法(转帖)
- GDI+中发生一般性错误的解决办法
- “GDI+中发生一般性错误” 的解决办法!
- GDI+中发生一般性错误的解决办法
- GDI+中发生一般性错误的解决办法(转载)
- GDI+中发生一般性错误的解决办法(转帖)
- GDI+中发生一般性错误的解决办法(转帖)
- GDI+中发生一般性错误的解决办法
- “GDI+中发生一般性错误” 的终极解决办法! 转自cici 自娱自乐
- GDI+中发生一般性错误的解决办法
- GDI+中发生一般性错误的解决办法 from http://www.cnblogs.com/winzheng/archive/2008/12/23/1360440.html
- GDI+中发生一般性错误的解决办法(转帖)
- GDI+ 中发生一般性错误,解决办法简单探索。
- GDI+中发生一般性错误的解决办法(转)
- “GDI+中发生一般性错误” 的终极解决办法!
- GDI+中发生一般性错误的解决办法
- asp.net mvc中GDI+中发生一般性错误的解决办法