前言:在日常图片浏览中,如果图片过多,只有一张张的打开图片才能知道图片的内容,显然这样浏览起来非常不便。Windows系统在浏览图片时提供了缩略图的功能,这样大大的方便了浏览者了解每张图片的内容,本实例采用两种方式实现了与Windows系统缩略图相同的功能。第一种:生成MakeT ...
前言:在日常图片浏览中,如果图片过多,只有一张张的打开图片才能知道图片的内容,显然这样浏览起来非常不便。Windows系统在浏览图片时提供了缩略图的功能,这样大大的方便了浏览者了解每张图片的内容,本实例采用两种方式实现了与Windows系统缩略图相同的功能。
第一种:生成MakeThumbnail方法
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#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。