C#图片处理基本应用(裁剪,缩放,清晰度,水印)

来源:互联网 发布:淘宝比较有名的耳饰店 编辑:程序博客网 时间:2024/05/22 06:11

代码

封装了几个通用的方法,如发现有BUG或漏洞还请及时指正。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespaceWuJian.Common
{
    /// <summary>
    /// 图片处理类
    /// 吴剑 2008-07-02 创建
    /// 吴剑 2011-01-21 修改
    /// </summary>
    publicclass PTImage
    {
        #region 正方型裁剪并缩放
        /// <summary>
        /// 正方型裁剪
        /// 以图片中心为轴心,截取正方型,然后等比缩放
        /// 用于头像处理
        /// </summary>
        /// <remarks>吴剑 2010-11-23</remarks>
        /// <param name="postedFile">原图HttpPostedFile对象</param>
        /// <param name="fileSaveUrl">缩略图存放地址</param>
        /// <param name="side">指定的边长(正方型)</param>
        /// <param name="quality">质量(范围0-100)</param>
        public staticvoid CutForSquare(System.Web.HttpPostedFile postedFile,string fileSaveUrl,int side, int quality)
        {
            //创建目录
            string dir = Path.GetDirectoryName(fileSaveUrl);
            if (!Directory.Exists(dir))
               Directory.CreateDirectory(dir);
            //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
            System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream,true);
            //原图宽高均小于模版,不作处理,直接保存
            if (initImage.Width <= side && initImage.Height <= side)
            {
               initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            else
            {
               //原始图片的宽、高
               int initWidth = initImage.Width;
               int initHeight = initImage.Height;
               //非正方型先裁剪为正方型
               if (initWidth != initHeight)
               {
                   //截图对象
                   System.Drawing.Image pickedImage = null;
                   System.Drawing.Graphics pickedG = null;
                   //宽大于高的横图
                   if (initWidth > initHeight)
                   {
                       //对象实例化
                       pickedImage = newSystem.Drawing.Bitmap(initHeight, initHeight);
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       //设置质量
                       pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                       pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                       //定位
                       Rectangle fromR = newRectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);
                       Rectangle toR = newRectangle(0, 0, initHeight, initHeight);
                       //画图
                       pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
                       //重置宽
                       initWidth = initHeight;
                   }
                   //高大于宽的竖图
                   else
                   {
                       //对象实例化
                       pickedImage = newSystem.Drawing.Bitmap(initWidth, initWidth);
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       //设置质量
                       pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                       pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                       //定位
                       Rectangle fromR = newRectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);
                       Rectangle toR = newRectangle(0, 0, initWidth, initWidth);
                       //画图
                       pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
                       //重置高
                       initHeight = initWidth;
                   }
                   //将截图对象赋给原图
                   initImage = (System.Drawing.Image)pickedImage.Clone();
                   //释放截图资源
                   pickedG.Dispose();
                   pickedImage.Dispose();
               }
               //缩略图对象
               System.Drawing.Image resultImage = newSystem.Drawing.Bitmap(side, side);
               System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);
               //设置质量
               resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
               resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
               //用指定背景色清空画布
               resultG.Clear(Color.White);
               //绘制缩略图
               resultG.DrawImage(initImage, newSystem.Drawing.Rectangle(0, 0, side, side), newSystem.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);
               //关键质量控制
               //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff
               ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
               ImageCodecInfo ici = null;
               foreach (ImageCodecInfo iin icis)
               {
                   if (i.MimeType =="image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
                   {
                       ici = i;
                   }
               }
               EncoderParameters ep = newEncoderParameters(1);
               ep.Param[0] = newEncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
               //保存缩略图
               resultImage.Save(fileSaveUrl, ici, ep);
               //释放关键质量控制所用资源
               ep.Dispose();
               //释放缩略图资源
               resultG.Dispose();
               resultImage.Dispose();
               //释放原始图片资源
               initImage.Dispose();
           }
        }
        /// <summary>
        /// 正方型裁剪
        /// 以图片中心为轴心,截取正方型,然后等比缩放
        /// 用于头像处理
        /// </summary>
        /// <remarks>吴剑 2010-11-23</remarks>
        /// <param name="postedFile">原图HttpPostedFile对象</param>
        /// <param name="fileSaveUrl">缩略图存放地址</param>
        /// <param name="side">指定的边长(正方型)</param>
        /// <param name="quality">质量(范围0-100)</param>
        public staticvoid CutForSquare(System.IO.Stream fromFile,string fileSaveUrl,int side, int quality)
        {
           //创建目录
           string dir = Path.GetDirectoryName(fileSaveUrl);
           if (!Directory.Exists(dir))
               Directory.CreateDirectory(dir);
           //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
           System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile,true);
           //原图宽高均小于模版,不作处理,直接保存
           if (initImage.Width <= side && initImage.Height <= side)
           {
               initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
           }
           else
           {
               //原始图片的宽、高
               int initWidth = initImage.Width;
               int initHeight = initImage.Height;
               //非正方型先裁剪为正方型
               if (initWidth != initHeight)
               {
                   //截图对象
                   System.Drawing.Image pickedImage = null;
                   System.Drawing.Graphics pickedG = null;
                   //宽大于高的横图
                   if (initWidth > initHeight)
                   {
                       //对象实例化
                       pickedImage = newSystem.Drawing.Bitmap(initHeight, initHeight);
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       //设置质量
                       pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                       pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                       //定位
                       Rectangle fromR = newRectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);
                       Rectangle toR = newRectangle(0, 0, initHeight, initHeight);
                       //画图
                       pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
                       //重置宽
                       initWidth = initHeight;
                   }
                   //高大于宽的竖图
                   else
                   {
                       //对象实例化
                       pickedImage = newSystem.Drawing.Bitmap(initWidth, initWidth);
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       //设置质量
                       pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                       pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                       //定位
                       Rectangle fromR = newRectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);
                       Rectangle toR = newRectangle(0, 0, initWidth, initWidth);
                       //画图
                       pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
                       //重置高
                       initHeight = initWidth;
                   }
                   //将截图对象赋给原图
                   initImage = (System.Drawing.Image)pickedImage.Clone();
                   //释放截图资源
                   pickedG.Dispose();
                   pickedImage.Dispose();
               }
               //缩略图对象
               System.Drawing.Image resultImage = newSystem.Drawing.Bitmap(side, side);
               System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);
               //设置质量
               resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
               resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
               //用指定背景色清空画布
               resultG.Clear(Color.White);
               //绘制缩略图
               resultG.DrawImage(initImage, newSystem.Drawing.Rectangle(0, 0, side, side), newSystem.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);
               //关键质量控制
               //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff
               ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
               ImageCodecInfo ici = null;
               foreach (ImageCodecInfo iin icis)
               {
                   if (i.MimeType =="image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
                   {
                       ici = i;
                   }
               }
               EncoderParameters ep = newEncoderParameters(1);
               ep.Param[0] = newEncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
               //保存缩略图
               resultImage.Save(fileSaveUrl, ici, ep);
               //释放关键质量控制所用资源
               ep.Dispose();
               //释放缩略图资源
               resultG.Dispose();
               resultImage.Dispose();
               //释放原始图片资源
               initImage.Dispose();
           }
        }
        #endregion
        #region 固定模版裁剪并缩放
        /// <summary>
        /// 指定长宽裁剪
        /// 按模版比例最大范围的裁剪图片并缩放至模版尺寸
        /// </summary>
        /// <remarks>吴剑 2010-11-15</remarks>
        /// <param name="postedFile">原图HttpPostedFile对象</param>
        /// <param name="fileSaveUrl">保存路径</param>
        /// <param name="maxWidth">最大宽(单位:px)</param>
        /// <param name="maxHeight">最大高(单位:px)</param>
        /// <param name="quality">质量(范围0-100)</param>
        public staticvoid CutForCustom(System.Web.HttpPostedFile postedFile,string fileSaveUrl,int maxWidth,int maxHeight,int quality)
        {
           //从文件获取原始图片,并使用流中嵌入的颜色管理信息
           System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream,true);
           //原图宽高均小于模版,不作处理,直接保存
           if (initImage.Width <= maxWidth && initImage.Height <= maxHeight)
           {
               initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
           }
           else
           {
               //模版的宽高比例
               double templateRate = (double)maxWidth / maxHeight;
               //原图片的宽高比例
               double initRate = (double)initImage.Width / initImage.Height;
               //原图与模版比例相等,直接缩放
               if (templateRate == initRate)
               {
                   //按模版大小生成最终图片
                   System.Drawing.Image templateImage = newSystem.Drawing.Bitmap(maxWidth, maxHeight);
                   System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);
                   templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                   templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                   templateG.Clear(Color.White);
                   templateG.DrawImage(initImage, newSystem.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);
                   templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
               }
               //原图与模版比例不等,裁剪后缩放
               else
               {
                   //裁剪对象
                   System.Drawing.Image pickedImage = null;
                   System.Drawing.Graphics pickedG = null;
                   //定位
                   Rectangle fromR = newRectangle(0, 0, 0, 0);//原图裁剪定位
                   Rectangle toR = newRectangle(0, 0, 0, 0);//目标定位
                   //宽为标准进行裁剪
                   if (templateRate > initRate)
                   {
                       //裁剪对象实例化
                       pickedImage = newSystem.Drawing.Bitmap(initImage.Width, (int)Math.Floor(initImage.Width / templateRate));
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       //裁剪源定位
                       fromR.X = 0;
                       fromR.Y = (int)Math.Floor((initImage.Height - initImage.Width / templateRate) / 2);
                       fromR.Width = initImage.Width;
                       fromR.Height = (int)Math.Floor(initImage.Width / templateRate);
                       //裁剪目标定位
                       toR.X = 0;
                       toR.Y = 0;
                       toR.Width = initImage.Width;
                       toR.Height = (int)Math.Floor(initImage.Width / templateRate);
                   }
                   //高为标准进行裁剪
                   else
                   {
                       pickedImage = newSystem.Drawing.Bitmap((int)Math.Floor(initImage.Height * templateRate), initImage.Height);
                       pickedG = System.Drawing.Graphics.FromImage(pickedImage);
                       fromR.X = (int)Math.Floor((initImage.Width - initImage.Height * templateRate) / 2);
                       fromR.Y = 0;
                       fromR.Width = (int)Math.Floor(initImage.Height * templateRate);
                       fromR.Height = initImage.Height;
                       toR.X = 0;
                       toR.Y = 0;
                       toR.Width = (int)Math.Floor(initImage.Height * templateRate);
                       toR.Height = initImage.Height;
                   }
                   //设置质量
                   pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                   pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                   //裁剪
                   pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
                   //按模版大小生成最终图片
                   System.Drawing.Image templateImage = newSystem.Drawing.Bitmap(maxWidth, maxHeight);
                   System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);
                   templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                   templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                   templateG.Clear(Color.White);
                   templateG.DrawImage(pickedImage, newSystem.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, pickedImage.Width, pickedImage.Height), System.Drawing.GraphicsUnit.Pixel);
                   //关键质量控制
                   //获取系统编码类型数组,包含了jpeg,bmp,png,gif,tiff
                   ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
                   ImageCodecInfo ici = null;
                   foreach (ImageCodecInfo iin icis)
                   {
                       if (i.MimeType =="image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
                       {
                           ici = i;
                       }
                   }
                   EncoderParameters ep = newEncoderParameters(1);
                   ep.Param[0] = newEncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
                   //保存缩略图
                   templateImage.Save(fileSaveUrl, ici, ep);
                   //templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
                   //释放资源
                   templateG.Dispose();
                   templateImage.Dispose();
                   pickedG.Dispose();
                   pickedImage.Dispose();
               }
           }
           //释放资源
           initImage.Dispose();
        }
        #endregion
        #region 等比缩放
        /// <summary>
        /// 图片等比缩放
        /// </summary>
        /// <remarks>吴剑 2011-01-21</remarks>
        /// <param name="postedFile">原图HttpPostedFile对象</param>
        /// <param name="savePath">缩略图存放地址</param>
        /// <param name="targetWidth">指定的最大宽度</param>
        /// <param name="targetHeight">指定的最大高度</param>
        /// <param name="watermarkText">水印文字(为""表示不使用水印)</param>
        /// <param name="watermarkImage">水印图片路径(为""表示不使用水印)</param>
        public staticvoid ZoomAuto(System.Web.HttpPostedFile postedFile,string savePath, System.Double targetWidth, System.Double targetHeight,string watermarkText,string watermarkImage)
        {
           //创建目录
           string dir = Path.GetDirectoryName(savePath);
           if (!Directory.Exists(dir))
               Directory.CreateDirectory(dir);
           //原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
           System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream,true);
           //原图宽高均小于模版,不作处理,直接保存
           if (initImage.Width <= targetWidth && initImage.Height <= targetHeight)
           {
               //文字水印
               if (watermarkText !="")
               {
                   using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(initImage))
                   {
                       System.Drawing.Font fontWater = newFont("黑体", 10);
                       System.Drawing.Brush brushWater = newSolidBrush(Color.White);
                       gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);
                       gWater.Dispose();
                   }
               }
               //透明图片水印
               if (watermarkImage !="")
               {
                   if (File.Exists(watermarkImage))
                   {
                       //获取水印图片
                       using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage))
                       {
                           //水印绘制条件:原始图片宽高均大于或等于水印图片
                           if (initImage.Width >= wrImage.Width && initImage.Height >= wrImage.Height)
                           {
                               Graphics gWater = Graphics.FromImage(initImage);
                               //透明属性
                               ImageAttributes imgAttributes = newImageAttributes();
                               ColorMap colorMap = newColorMap();
                               colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
                               colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
                               ColorMap[] remapTable = { colorMap };
                               imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
                               float[][] colorMatrixElements = {
                                  new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  0.0f,  0.0f,  0.5f, 0.0f},//透明度:0.5
                                  new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
                               };
                               ColorMatrix wmColorMatrix = newColorMatrix(colorMatrixElements);
                               imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
                               gWater.DrawImage(wrImage, newRectangle(initImage.Width - wrImage.Width, initImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);
                               gWater.Dispose();
                           }
                           wrImage.Dispose();
                       }
                   }
               }
               //保存
               initImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
           }
           else
           {
               //缩略图宽、高计算
               double newWidth = initImage.Width;
               double newHeight = initImage.Height;
               //宽大于高或宽等于高(横图或正方)
               if (initImage.Width > initImage.Height || initImage.Width == initImage.Height)
               {
                   //如果宽大于模版
                   if (initImage.Width > targetWidth)
                   {
                       //宽按模版,高按比例缩放
                       newWidth = targetWidth;
                       newHeight = initImage.Height * (targetWidth / initImage.Width);
                   }
               }
               //高大于宽(竖图)
               else
               {
                   //如果高大于模版
                   if (initImage.Height > targetHeight)
                   {
                       //高按模版,宽按比例缩放
                       newHeight = targetHeight;
                       newWidth = initImage.Width * (targetHeight / initImage.Height);
                   }
               }
               //生成新图
               //新建一个bmp图片
               System.Drawing.Image newImage = newSystem.Drawing.Bitmap((int)newWidth, (int)newHeight);
               //新建一个画板
               System.Drawing.Graphics newG = System.Drawing.Graphics.FromImage(newImage);
               //设置质量
               newG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
               newG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
               //置背景色
               newG.Clear(Color.White);
               //画图
               newG.DrawImage(initImage, newSystem.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height),new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);
               //文字水印
               if (watermarkText !="")
               {
                   using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(newImage))
                   {
                       System.Drawing.Font fontWater = newFont("宋体", 10);
                       System.Drawing.Brush brushWater = newSolidBrush(Color.White);
                       gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);
                       gWater.Dispose();
                   }
               }
               //透明图片水印
               if (watermarkImage !="")
               {
                   if (File.Exists(watermarkImage))
                   {
                       //获取水印图片
                       using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage))
                       {
                           //水印绘制条件:原始图片宽高均大于或等于水印图片
                           if (newImage.Width >= wrImage.Width && newImage.Height >= wrImage.Height)
                           {
                               Graphics gWater = Graphics.FromImage(newImage);
                               //透明属性
                               ImageAttributes imgAttributes = newImageAttributes();
                               ColorMap colorMap = newColorMap();
                               colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
                               colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
                               ColorMap[] remapTable = { colorMap };
                               imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
                               float[][] colorMatrixElements = {
                                  new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
                                  new float[] {0.0f,  0.0f,  0.0f,  0.5f, 0.0f},//透明度:0.5
                                  new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
                               };
                               ColorMatrix wmColorMatrix = newColorMatrix(colorMatrixElements);
                               imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
                               gWater.DrawImage(wrImage, newRectangle(newImage.Width - wrImage.Width, newImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);
                               gWater.Dispose();
                           }
                           wrImage.Dispose();
                       }
                   }
               }
               //保存缩略图
               newImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
               //释放资源
               newG.Dispose();
               newImage.Dispose();
               initImage.Dispose();
           }
        }
       
        #endregion       
        #region 其它
        /// <summary>
        /// 判断文件类型是否为WEB格式图片
        /// (注:JPG,GIF,BMP,PNG)
        /// </summary>
        /// <param name="contentType">HttpPostedFile.ContentType</param>
        /// <returns></returns>
        public staticbool IsWebImage(stringcontentType)
        {
           if (contentType =="image/pjpeg" || contentType == "image/jpeg" || contentType == "image/gif" || contentType == "image/bmp" || contentType == "image/png")
           {
               return true;
           }
           else
           {
               return false;
           }
        }
        #endregion
    }//end class
}