生成缩略图
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(string originalImagePath, string thumbnailPath, int width, int height, string mode)
10
{
11
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
12![](/Images/OutliningIndicators/InBlock.gif)
13
int towidth = width;
14
int toheight = height;
15![](/Images/OutliningIndicators/InBlock.gif)
16
int x = 0;
17
int y = 0;
18
int ow = originalImage.Width;
19
int oh = originalImage.Height;
20![](/Images/OutliningIndicators/InBlock.gif)
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
x = (originalImage.Width - ow) / 2;
38
}
39
else
40
{
41
ow = originalImage.Width;
42
oh = originalImage.Width * height / towidth;
43
x = 0;
44
y = (originalImage.Height - oh) / 2;
45
}
46
break;
47
default:
48
break;
49
}
50![](/Images/OutliningIndicators/InBlock.gif)
51
//新建一个bmp图片
52
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
53![](/Images/OutliningIndicators/InBlock.gif)
54
//新建一个画板
55
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
56![](/Images/OutliningIndicators/InBlock.gif)
57
//设置高质量插值法
58
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
59![](/Images/OutliningIndicators/InBlock.gif)
60
//设置高质量,低速度呈现平滑程度
61
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
62![](/Images/OutliningIndicators/InBlock.gif)
63
//清空画布并以透明背景色填充
64
g.Clear(System.Drawing.Color.Transparent);
65![](/Images/OutliningIndicators/InBlock.gif)
66
//在指定位置并且按指定大小绘制原图片的指定部分
67
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
68
new System.Drawing.Rectangle(x, y, ow, oh),
69
System.Drawing.GraphicsUnit.Pixel);
70![](/Images/OutliningIndicators/InBlock.gif)
71
try
72
{
73
//以jpg格式保存缩略图
74
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
75
}
76
catch (System.Exception e)
77
{
78
throw e;
79
}
80
finally
81
{
82
originalImage.Dispose();
83
bitmap.Dispose();
84
g.Dispose();
85
}
86
}
87![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/InBlock.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
86
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
87
![](/Images/OutliningIndicators/None.gif)