博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片生成缩略图
阅读量:5290 次
发布时间:2019-06-14

本文共 2347 字,大约阅读时间需要 7 分钟。

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 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/LOVEJIEYING/p/5155435.html

你可能感兴趣的文章
C语言程序设计II—第九周教学
查看>>
C# 获取系统时间及时间格式转换
查看>>
WCF、WebAPI、WCFREST、WebService之间的区别
查看>>
2018-2019-2-20175332-实验四《Android程序设计》实验报告
查看>>
全栈12期的崛起之捡点儿有用的说说
查看>>
基础类型
查看>>
属性动画
查看>>
标识符
查看>>
Swift 常量&变量
查看>>
Sqli labs系列-less-4 这关好坑!!!
查看>>
路由跟踪工具0trace
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
T-SQL触发器,限制一次只能删除一条数据
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
理解运算符重载 4
查看>>
快来熟练使用 Mac 编程
查看>>
第二周
查看>>
断言简介
查看>>