码迷,mamicode.com
首页 > 其他好文 > 详细

图片生成缩略图

时间:2016-01-24 18:17:43      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

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

图片生成缩略图

标签:

原文地址:http://www.cnblogs.com/LOVEJIEYING/p/5155435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!