茶树

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

using System.Collections; using System.Drawing;

using System.IO;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

namespace Common {    

/// <summary>     /// 图片处理类   

  /// </summary>   

  public class ImageHelper     {      

   #region 缩略图        

/// <summary>        

/// 生成缩略图        

/// </summary>        

/// <param name="originalImagePath">源图路径(物理路径)</param>        

/// <param name="thumbnailPath">缩略图路径(物理路径)</param>        

/// <param name="width">缩略图宽度</param>        

/// <param name="height">缩略图高度</param>        

/// <param name="mode">生成缩略图的方式</param>           

public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)    

     {        

     Image originalImage = Image.FromFile(originalImagePath);

            int towidth = width;   

          int toheight = height;

            int x = 0;      

       int y = 0;       

      int ow = originalImage.Width;   

          int oh = originalImage.Height;

            switch (mode)     

        {            

     case "HW":  //指定高宽缩放(可能变形)  

                                  break;     

            case "W":   //指定宽,高按比例               

                         toheight = originalImage.Height * width / originalImage.Width;       

              break;          

       case "H":   //指定高,宽按比例      

               towidth = originalImage.Width * height / originalImage.Height;         

            break;            

     case "Cut": //指定高宽裁减(不变形)         

      if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)   

                  {               

          oh = originalImage.Height;            

          ow = originalImage.Height * towidth / toheight;     

           y = 0;        

            x = (originalImage.Width - ow) / 2;              

       }   else  {               

          ow = originalImage.Width; 

  oh = originalImage.Width * height / towidth;  

x = 0; 

y = (originalImage.Height - oh) / 2;  

                   }               

      break;           

      default:            

         break;        

     }

            //新建一个bmp图片       

      Image bitmap = new Bitmap(towidth, toheight);

            //新建一个画板

            Graphics g = Graphics.FromImage(bitmap);

            //设置高质量插值法          

   g.InterpolationMode = InterpolationMode.High;

            //设置高质量,低速度呈现平滑程度        

     g.SmoothingMode = SmoothingMode.HighQuality;

            //清空画布并以透明背景色填充

            g.Clear(System.Drawing.Color.Transparent);

            //在指定位置并且按指定大小绘制原图片的指定部分         

    g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel);

            try{

     //以jpg格式保存缩略图 

bitmap.Save(thumbnailPath, ImageFormat.Jpeg);

} catch (System.Exception e){  

               LogHelper.WriteLog("裁剪图片出错,原图片路径:" + originalImagePath + ",保存图片路径:" + thumbnailPath + ",异常", e);

      throw e;

} finally {

originalImage.Dispose();      

           bitmap.Dispose();       

          g.Dispose();           

  }       

  }       

  #endregion

posted on 2016-01-24 17:15  "茶树"  阅读(255)  评论(0编辑  收藏  举报