![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
1![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//// <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![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
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![](/Images/OutliningIndicators/InBlock.gif)
21
switch (mode)
22![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
34
oh = originalImage.Height;
35
ow = originalImage.Height*towidth/toheight;
36
y = 0;
37
x = (originalImage.Width - ow)/2;
38
}
39
else
40![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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
51
//新建一个bmp图片
52
Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
53![](/Images/OutliningIndicators/InBlock.gif)
54
//新建一个画板
55
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(Color.Transparent);
65![](/Images/OutliningIndicators/InBlock.gif)
66
//在指定位置并且按指定大小绘制原图片的指定部分
67
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
68
new Rectangle(x, y, ow,oh),
69
GraphicsUnit.Pixel);
70![](/Images/OutliningIndicators/InBlock.gif)
71
try
72![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
73
//以jpg格式保存缩略图
74
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
75
}
76
catch(System.Exception e)
77![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
78
throw e;
79
}
80
finally
81![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
82
originalImage.Dispose();
83
bitmap.Dispose();
84
g.Dispose();
85
}
86
}
87![](/Images/OutliningIndicators/None.gif)
posted @
2008-03-23 09:20
飘渺峰
阅读(
185)
评论()
编辑
收藏
举报