生成缩略图

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
 2InBlock.gif    /// 生成缩略图
 3InBlock.gif    /// </summary>
 4InBlock.gif    /// <param name="originalImagePath">源图路径(物理路径)</param>
 5InBlock.gif    /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
 6InBlock.gif    /// <param name="width">缩略图宽度</param>
 7InBlock.gif    /// <param name="height">缩略图高度</param>
 8ExpandedBlockEnd.gif    /// <param name="mode">生成缩略图的方式</param>    

 9 None.gif      public   static   void  MakeThumbnail( string  originalImagePath,  string  thumbnailPath,  int  width,  int  height,  string  mode)
10 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
11InBlock.gif        System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
12InBlock.gif
13InBlock.gif        int towidth = width;
14InBlock.gif        int toheight = height;
15InBlock.gif
16InBlock.gif        int x = 0;
17InBlock.gif        int y = 0;
18InBlock.gif        int ow = originalImage.Width;
19InBlock.gif        int oh = originalImage.Height;
20InBlock.gif
21InBlock.gif        switch (mode)
22ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
23InBlock.gif            case "HW"://指定高宽缩放(可能变形)                
24InBlock.gif                break;
25InBlock.gif            case "W"://指定宽,高按比例                    
26InBlock.gif                toheight = originalImage.Height * width / originalImage.Width;
27InBlock.gif                break;
28InBlock.gif            case "H"://指定高,宽按比例
29InBlock.gif                towidth = originalImage.Width * height / originalImage.Height;
30InBlock.gif                break;
31InBlock.gif            case "Cut"://指定高宽裁减(不变形)                
32InBlock.gif                if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
33ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
34InBlock.gif                    oh = originalImage.Height;
35InBlock.gif                    ow = originalImage.Height * towidth / toheight;
36InBlock.gif                    y = 0;
37InBlock.gif                    x = (originalImage.Width - ow) / 2;
38ExpandedSubBlockEnd.gif                }

39InBlock.gif                else
40ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
41InBlock.gif                    ow = originalImage.Width;
42InBlock.gif                    oh = originalImage.Width * height / towidth;
43InBlock.gif                    x = 0;
44InBlock.gif                    y = (originalImage.Height - oh) / 2;
45ExpandedSubBlockEnd.gif                }

46InBlock.gif                break;
47InBlock.gif            default:
48InBlock.gif                break;
49ExpandedSubBlockEnd.gif        }

50InBlock.gif
51InBlock.gif        //新建一个bmp图片
52InBlock.gif        System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
53InBlock.gif
54InBlock.gif        //新建一个画板
55InBlock.gif        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
56InBlock.gif
57InBlock.gif        //设置高质量插值法
58InBlock.gif        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
59InBlock.gif
60InBlock.gif        //设置高质量,低速度呈现平滑程度
61InBlock.gif        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
62InBlock.gif
63InBlock.gif        //清空画布并以透明背景色填充
64InBlock.gif        g.Clear(System.Drawing.Color.Transparent);
65InBlock.gif
66InBlock.gif        //在指定位置并且按指定大小绘制原图片的指定部分
67InBlock.gif        g.DrawImage(originalImage, new System.Drawing.Rectangle(00, towidth, toheight),
68InBlock.gif            new System.Drawing.Rectangle(x, y, ow, oh),
69InBlock.gif            System.Drawing.GraphicsUnit.Pixel);
70InBlock.gif
71InBlock.gif        try
72ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
73InBlock.gif            //以jpg格式保存缩略图
74InBlock.gif            bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
75ExpandedSubBlockEnd.gif        }

76InBlock.gif        catch (System.Exception e)
77ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
78InBlock.gif            throw e;
79ExpandedSubBlockEnd.gif        }

80InBlock.gif        finally
81ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
82InBlock.gif            originalImage.Dispose();
83InBlock.gif            bitmap.Dispose();
84InBlock.gif            g.Dispose();
85ExpandedSubBlockEnd.gif        }

86ExpandedBlockEnd.gif    }

87 None.gif

转载于:https://www.cnblogs.com/eric-huang/archive/2008/05/08/1188129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值