你的位置:首页 > 软件开发 > ASP.net > C#生成图片缩略图(2种思路)

C#生成图片缩略图(2种思路)

发布时间:2015-12-10 18:00:21
前言:在日常图片浏览中,如果图片过多,只有一张张的打开图片才能知道图片的内容,显然这样浏览起来非常不便。Windows系统在浏览图片时提供了缩略图的功能,这样大大的方便了浏览者了解每张图片的内容,本实例采用两种方式实现了与Windows系统缩略图相同的功能。第一种:生成MakeT ...

 前言:在日常图片浏览中,如果图片过多,只有一张张的打开图片才能知道图片的内容,显然这样浏览起来非常不便。Windows系统在浏览图片时提供了缩略图的功能,这样大大的方便了浏览者了解每张图片的内容,本实例采用两种方式实现了与Windows系统缩略图相同的功能。

第一种:生成MakeThumbnail方法

C#生成图片缩略图(2种思路)C#生成图片缩略图(2种思路)
 1 //// <summary>  2 /// 生成缩略图  3 /// </summary>  4 /// <param name="originalImagePath">源图路径(物理路径)</param>  5 /// <param name="thumbnailPath">缩略图路径(物理路径)</param>  6 /// <param name="width">缩略图宽度</param>  7 /// <param name="height">缩略图高度</param>  8 /// <param name="mode">生成缩略图的方式</param>    9 public static void MakeThumbnail(get='_blank'>string originalImagePath, string thumbnailPath, int width, int height, string mode) 10 { 11   Image originalImage = Image.FromFile(originalImagePath); 12 13   int towidth = width; 14   int toheight = height; 15     16   int x = 0; 17   int y = 0; 18   int ow = originalImage.Width; 19   int oh = originalImage.Height;     20 21   switch (mode) 22   {     23     case "HW"://指定高宽缩放(可能变形)         24     break; 25     case "W"://指定宽,高按比例           26     toheight = originalImage.Height * width/originalImage.Width; 27     break; 28     case "H"://指定高,宽按比例 29     towidth = originalImage.Width * height/originalImage.Height;           30     break; 31     case "Cut"://指定高宽裁减(不变形)    32      if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) 33       { 34         oh = originalImage.Height; 35         ow = originalImage.Height*towidth/toheight; 36         y = 0; 37       } 38       else 39       { 40         ow = originalImage.Width; 41         oh = originalImage.Width*height/towidth; 42         x = 0; 43         y = (originalImage.Height - oh)/2; 44       } 45     break;           46     default : 47     break; 48   }   49       50   //新建一个bmp图片 51   Image bitmap = new System.Drawing.Bitmap(towidth,toheight); 52 53   //新建一个画板 54   Graphics g = System.Drawing.Graphics.FromImage(bitmap); 55 56   //设置高质量插值法 57   g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 58 59   //设置高质量,低速度呈现平滑程度 60   g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 61 62   //清空画布并以透明背景色填充 63   g.Clear(Color.Transparent);     64 65   //在指定位置并且按指定大小绘制原图片的指定部分 66   g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow,oh),GraphicsUnit.Pixel);67   try 68   {       69     //以jpg格式保存缩略图 70     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 71   } 72   catch(System.Exception e) 73   { 74    throw e; 75   } 76   finally 77   { 78     originalImage.Dispose(); 79     bitmap.Dispose();             80     g.Dispose(); 81   } 82 }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:C#生成图片缩略图(2种思路)

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录