Util.cs 的部分代码:


 1动态生成缩略图_相对地址动态生成缩略图_相对地址_02/**//// <summary>
 2动态生成缩略图_绝对地址_03/// 创建缩略图
 3动态生成缩略图_h5_04/// </summary>
 4动态生成缩略图_相对地址_05/// <param name="src">来源页面
 5动态生成缩略图_h5_06/// 可以是相对地址或者绝对地址
 6动态生成缩略图_相对地址_07/// </param>
 7动态生成缩略图_h5_08/// <param name="width">缩略图宽度</param>
 8动态生成缩略图_h5_09/// <param name="height">缩略图高度</param>
 9动态生成缩略图_相对地址_10/// <returns>字节数组</returns>

10动态生成缩略图_绝对地址_11public static byte[] MakeThumbnail(string src, double width, double height)
11动态生成缩略图_相对地址_12动态生成缩略图_相对地址_13动态生成缩略图_h5_14{
12动态生成缩略图_相对地址_15    Image image;
13动态生成缩略图_h5_16
14动态生成缩略图_绝对地址_17    // 相对路径从本机直接读取
15动态生成缩略图_h5_18    if (src.ToLower().IndexOf("http://"== -1)
16动态生成缩略图_相对地址_19动态生成缩略图_h5_20    动态生成缩略图_h5_14{
17动态生成缩略图_h5_22        src = HttpContext.Current.Server.MapPath(src);
18动态生成缩略图_h5_23        image = Image.FromFile(src, true);
19动态生成缩略图_h5_24    }

20动态生成缩略图_相对地址_25    else // 绝对路径从 Http 读取
21动态生成缩略图_绝对地址_26动态生成缩略图_相对地址_27    动态生成缩略图_h5_14{
22动态生成缩略图_h5_29        HttpWebRequest req = (HttpWebRequest) WebRequest.Create(src);
23动态生成缩略图_相对地址_30        req.Method = "GET";
24动态生成缩略图_h5_31        HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
25动态生成缩略图_绝对地址_32        Stream receiveStream = resp.GetResponseStream();
26动态生成缩略图_h5_33        image = Image.FromStream(receiveStream);
27动态生成缩略图_绝对地址_34        resp.Close();
28动态生成缩略图_相对地址_35        receiveStream.Close();
29动态生成缩略图_相对地址_36    }

30动态生成缩略图_h5_37    double newWidth, newHeight;
31动态生成缩略图_绝对地址_38    if (image.Width > image.Height)
32动态生成缩略图_h5_39动态生成缩略图_h5_40    动态生成缩略图_h5_14{
33动态生成缩略图_h5_42        newWidth = width;
34动态生成缩略图_h5_43        newHeight = image.Height*(newWidth/image.Width);
35动态生成缩略图_绝对地址_44    }

36动态生成缩略图_绝对地址_45    else
37动态生成缩略图_h5_46动态生成缩略图_h5_47    动态生成缩略图_h5_14{
38动态生成缩略图_相对地址_49        newHeight = height;
39动态生成缩略图_相对地址_50        newWidth = (newHeight/image.Height)*image.Width;
40动态生成缩略图_绝对地址_51    }

41动态生成缩略图_相对地址_52    if (newWidth > width)
42动态生成缩略图_相对地址_53动态生成缩略图_相对地址_54    动态生成缩略图_h5_14{
43动态生成缩略图_h5_56        newWidth = width;
44动态生成缩略图_相对地址_57    }

45动态生成缩略图_相对地址_58    if (newHeight > height)
46动态生成缩略图_绝对地址_59动态生成缩略图_h5_60    动态生成缩略图_h5_14{
47动态生成缩略图_h5_62        newHeight = height;
48动态生成缩略图_h5_63    }

49动态生成缩略图_绝对地址_64    //取得图片大小
50动态生成缩略图_相对地址_65    Size size = new Size((int) newWidth, (int) newHeight);
51动态生成缩略图_h5_66    //新建一个bmp图片
52动态生成缩略图_h5_67    Image bitmap = new Bitmap(size.Width, size.Height);
53动态生成缩略图_绝对地址_68    //新建一个画板
54动态生成缩略图_h5_69    Graphics g = Graphics.FromImage(bitmap);
55动态生成缩略图_相对地址_70    //设置高质量插值法
56动态生成缩略图_相对地址_71    g.InterpolationMode = InterpolationMode.High;
57动态生成缩略图_绝对地址_72    //设置高质量,低速度呈现平滑程度
58动态生成缩略图_绝对地址_73    g.SmoothingMode = SmoothingMode.HighQuality;
59动态生成缩略图_绝对地址_74    //清空一下画布
60动态生成缩略图_h5_75    g.Clear(Color.White);
61动态生成缩略图_绝对地址_76    //在指定位置画图
62动态生成缩略图_相对地址_77    g.DrawImage(image, new Rectangle(00, bitmap.Width, bitmap.Height),
63动态生成缩略图_绝对地址_78                new Rectangle(00, image.Width, image.Height),
64动态生成缩略图_绝对地址_79                GraphicsUnit.Pixel);
65动态生成缩略图_h5_80动态生成缩略图_相对地址_81    /**////文字水印
66动态生成缩略图_相对地址_82    //System.Drawing.Graphics G=System.Drawing.Graphics.FromImage(bitmap);
67动态生成缩略图_绝对地址_83    //System.Drawing.Font f=new Font("宋体",10);
68动态生成缩略图_相对地址_84    //System.Drawing.Brush b=new SolidBrush(Color.Black);
69动态生成缩略图_绝对地址_85    //G.DrawString("myohmine",f,b,10,10);
70动态生成缩略图_相对地址_86    //G.Dispose();
71动态生成缩略图_h5_87动态生成缩略图_h5_88    /**////图片水印
72动态生成缩略图_h5_89    //System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
73动态生成缩略图_相对地址_90    //Graphics a = Graphics.FromImage(bitmap);
74动态生成缩略图_h5_91    //a.DrawImage(copyImage, new Rectangle(bitmap.Width-copyImage.Width,bitmap.Height-copyImage.Height,copyImage.Width, copyImage.Height),0,0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
75动态生成缩略图_相对地址_92    //copyImage.Dispose();
76动态生成缩略图_绝对地址_93    //a.Dispose();
77动态生成缩略图_相对地址_94    //copyImage.Dispose();
78动态生成缩略图_h5_95    //保存高清晰度的缩略图
79动态生成缩略图_h5_96    MemoryStream stream = new MemoryStream();
80动态生成缩略图_绝对地址_97    bitmap.Save(stream, ImageFormat.Jpeg);
81动态生成缩略图_相对地址_98    byte[] buffer = stream.GetBuffer();
82动态生成缩略图_h5_99    g.Dispose();
83动态生成缩略图_绝对地址_100    image.Dispose();
84动态生成缩略图_绝对地址_101    bitmap.Dispose();
85动态生成缩略图_h5_102    return buffer;
86动态生成缩略图_相对地址_103}


专门输出缩略图的页面 Thumbnail.aspx.cs 代码:


 1动态生成缩略图_绝对地址_104namespace JCDWeb
 2动态生成缩略图_相对地址_105动态生成缩略图_h5_106动态生成缩略图_h5_14{
 3动态生成缩略图_h5_108    using System;
 4动态生成缩略图_h5_109    using System.Web.UI;
 5动态生成缩略图_h5_110
 6动态生成缩略图_绝对地址_111    public class Thumbnail : Page
 7动态生成缩略图_相对地址_112动态生成缩略图_h5_113    动态生成缩略图_h5_14{
 8动态生成缩略图_绝对地址_115        private void Page_Load(object sender, EventArgs e)
 9动态生成缩略图_h5_116动态生成缩略图_相对地址_117        动态生成缩略图_h5_14{
10动态生成缩略图_相对地址_119            string src = GetQueryStringSrc();
11动态生成缩略图_相对地址_120            double width = GetQueryStringWidth();
12动态生成缩略图_绝对地址_121            double height = GetQueryStringHeight();
13动态生成缩略图_h5_122
14动态生成缩略图_绝对地址_123            Response.ContentType = "image/jpeg";
15动态生成缩略图_绝对地址_124            Response.Clear();
16动态生成缩略图_相对地址_125
17动态生成缩略图_相对地址_126            if (src.Length > 0 && width > 0 && height > 0)
18动态生成缩略图_相对地址_127动态生成缩略图_相对地址_128            动态生成缩略图_h5_14{
19动态生成缩略图_h5_130                try 
20动态生成缩略图_h5_131动态生成缩略图_h5_132                动态生成缩略图_h5_14{
21动态生成缩略图_h5_134                    byte[] buffer = Util.MakeThumbnail(src, width, height);
22动态生成缩略图_绝对地址_135                    Response.BinaryWrite(buffer);
23动态生成缩略图_绝对地址_136                    Response.Flush();
24动态生成缩略图_绝对地址_137                }

25动态生成缩略图_相对地址_138                catch
26动态生成缩略图_相对地址_139动态生成缩略图_绝对地址_140                动态生成缩略图_h5_14{
27动态生成缩略图_绝对地址_142
28动态生成缩略图_绝对地址_143                }

29动态生成缩略图_h5_144            }

30动态生成缩略图_绝对地址_145        }

31动态生成缩略图_绝对地址_146
32动态生成缩略图_相对地址_147动态生成缩略图_绝对地址_148        handle query string#region handle query string
33动态生成缩略图_绝对地址_149
34动态生成缩略图_相对地址_150        private string GetQueryStringSrc()
35动态生成缩略图_h5_151动态生成缩略图_h5_152        动态生成缩略图_h5_14{
36动态生成缩略图_h5_154            string src = Request.QueryString["src"];
37动态生成缩略图_绝对地址_155            src = (src == null? "" : src;
38动态生成缩略图_相对地址_156            return src;
39动态生成缩略图_相对地址_157        }

40动态生成缩略图_相对地址_158
41动态生成缩略图_相对地址_159        private double GetQueryStringWidth()
42动态生成缩略图_相对地址_160动态生成缩略图_绝对地址_161        动态生成缩略图_h5_14{
43动态生成缩略图_相对地址_163            string sWidth = Request.QueryString["width"];
44动态生成缩略图_绝对地址_164            sWidth = (sWidth == null? "" : sWidth;
45动态生成缩略图_h5_165            double width = 0;
46动态生成缩略图_相对地址_166            try
47动态生成缩略图_相对地址_167动态生成缩略图_相对地址_168            动态生成缩略图_h5_14{
48动态生成缩略图_绝对地址_170                width = double.Parse(sWidth);
49动态生成缩略图_绝对地址_171            }

50动态生成缩略图_绝对地址_172            catch
51动态生成缩略图_绝对地址_173动态生成缩略图_绝对地址_174            动态生成缩略图_h5_14{
52动态生成缩略图_h5_176            }

53动态生成缩略图_绝对地址_177            return width;
54动态生成缩略图_相对地址_178        }

55动态生成缩略图_h5_179
56动态生成缩略图_相对地址_180        private double GetQueryStringHeight()
57动态生成缩略图_h5_181动态生成缩略图_绝对地址_182        动态生成缩略图_h5_14{
58动态生成缩略图_h5_184            string sHeight = Request.QueryString["height"];
59动态生成缩略图_绝对地址_185            sHeight = (sHeight == null? "" : sHeight;
60动态生成缩略图_h5_186            double height = 0;
61动态生成缩略图_h5_187            try
62动态生成缩略图_h5_188动态生成缩略图_绝对地址_189            动态生成缩略图_h5_14{
63动态生成缩略图_相对地址_191                height = double.Parse(sHeight);
64动态生成缩略图_绝对地址_192            }

65动态生成缩略图_h5_193            catch
66动态生成缩略图_h5_194动态生成缩略图_h5_195            动态生成缩略图_h5_14{
67动态生成缩略图_h5_197            }

68动态生成缩略图_绝对地址_198            return height;
69动态生成缩略图_绝对地址_199        }

70动态生成缩略图_相对地址_200
71动态生成缩略图_绝对地址_201        #endregion

72动态生成缩略图_绝对地址_202
73动态生成缩略图_相对地址_203动态生成缩略图_h5_204        Web Forms Designer generated code#region Web Forms Designer generated code
74动态生成缩略图_h5_205
75动态生成缩略图_绝对地址_206        protected override void OnInit(EventArgs e)
76动态生成缩略图_h5_207动态生成缩略图_h5_208        动态生成缩略图_h5_14{
77动态生成缩略图_相对地址_210            InitializeComponent();
78动态生成缩略图_相对地址_211            base.OnInit(e);
79动态生成缩略图_h5_212        }

80动态生成缩略图_h5_213
81动态生成缩略图_相对地址_214        private void InitializeComponent()
82动态生成缩略图_绝对地址_215动态生成缩略图_绝对地址_216        动态生成缩略图_h5_14{
83动态生成缩略图_相对地址_218            this.Load += new EventHandler(this.Page_Load);
84动态生成缩略图_h5_219        }

85动态生成缩略图_绝对地址_220
86动态生成缩略图_绝对地址_221        #endregion

87动态生成缩略图_绝对地址_222    }

88动态生成缩略图_h5_223}

调用方法:


相对地址:

Thumbnail.aspx?width=200&height=300&src=upload/test.jpg


绝对地址:

Thumbnail.aspx?width=200&height=300&src=http://www.test.com/upload/test.jpg