加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 自然语言处理、建站、经验、云计算、图像分析!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

c#生成图片缩略图的类2种实现思路介绍

发布时间:2023-06-08 05:30:39 所属栏目:语言 来源:转载
导读:   第一种



  代码如下:



  /**//// <summary>



  /// 生成缩略图



  /// </summary>



  /// <param name="originalImagePath">源图路径(物理路径)
  第一种
 
  代码如下:
 
  /**//// <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 System.Drawing.Bitmap(towidth,toheight);
 
  //新建一个画板
 
  Graphics g = System.Drawing.Graphics.FromImage(bitmap);
 
  //设置高质量插值法
 
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
 
  //设置高质量,低速度呈现平滑程度
 
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 
  //清空画布并以透明背景色填充
 
  g.Clear(Color.Transparent);
 
  //在指定位置并且按指定大小绘制原图片的指定部分
 
  g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
 
  new Rectangle(x, y, ow,oh),
 
  GraphicsUnit.Pixel);
 
  try
 
  {
 
  //以jpg格式保存缩略图
 
  bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 
  }
 
  catch(System.Exception e)
 
  {
 
  throw e;
 
  }
 
  finally
 
  {
 
  originalImage.Dispose();
 
  bitmap.Dispose();
 
  g.Dispose();
 
  }
 
  }
 
  关键方法Graphics.DrawImage见ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
 
  第二种
 
  4个重载方法,有直接返回Image对象的,有生成缩略图,并且保存到指定目录的!
 
  代码如下:
 
  using System.IO;
 
  using System.Drawing;
 
  using System.Drawing.Imaging;
 
  /// <summary>
 
  /// 图片处理类
 
  /// 1、生成缩略图片或按照比例改变图片的大小和画质
 

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章