高清方法生成缩略图函数

 1         /// <summary>
 2         /// 生成缩略图函数
 3         /// </summary>
 4         /// <param name="width">原始图片的宽度</param>
 5         /// <param name="height">原始图片的高度</param>
 6         /// <param name="left">水印字符的生成位置</param>
 7         /// <param name="right">水印字符的生成位置</param>
 8         /// <param name="picpath">原图的所在路径</param>
 9         /// <param name="picthumpath">生成缩略图的所在路径</param>
10         public void GetThumbnailImage(int intThumbWidth, int intThumbHeight, int left, int right, string picpath, string picthumpath)
11         {
12             System.Drawing.Image oldimage = System.Drawing.Image.FromFile(picpath);
13           
14             //原图宽度和高度 
15             int width = oldimage.Width;
16             int height = oldimage.Height;
17             int smallWidth;
18             int smallHeight;
19 
20             //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽  和 原图的高/缩略图的高) 
21             if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight)
22             {
23                 smallWidth = intThumbWidth + 5;
24                 smallHeight = intThumbWidth * height / width + 5;
25             }
26             else
27             {
28                 smallWidth = intThumbHeight * width / height + 5;
29                 smallHeight = intThumbHeight + 5;
30             }
31 
32 
33             //新建一个图板,以最小等比例压缩大小绘制原图 
34             using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight))
35             {
36                 //绘制中间图 
37                 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
38                 {
39                     //高清,平滑 
40                     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
41                     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
42                     g.Clear(Color.Black);
43                     g.DrawImage(
44                     oldimage,
45                     new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight),
46                     new System.Drawing.Rectangle(0, 0, width, height),
47                     System.Drawing.GraphicsUnit.Pixel
48                     );
49                 }
50                 //新建一个图板,以缩略图大小绘制中间图 
51                 using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight))
52                 {
53                     //绘制缩略图 
54                     using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1))
55                     {
56                         //高清,平滑 
57                         g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
58                         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
59                         g.Clear(Color.Black);
60                         int lwidth = (smallWidth - intThumbWidth) / 2;
61                         int bheight = (smallHeight - intThumbHeight) / 2;
62                         g.DrawImage(bitmap, new Rectangle(0, 0, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);
63                         g.Dispose();
64                         bitmap1.Save(picthumpath, System.Drawing.Imaging.ImageFormat.Jpeg);
65                         bitmap1.Dispose();
66                     }
67                 }
68             }
69 
70             oldimage.Dispose();
71         }

 

posted @ 2013-08-18 11:34  KidYang  阅读(1201)  评论(0编辑  收藏  举报