(修改自 http://community.csdn.net//Expert/TopicView2.asp?id=4370310 中所帖的代码,版权没有)
Util.cs 的部分代码:
专门输出缩略图的页面 Thumbnail.aspx.cs 代码:
调用方法:
相对地址:
Thumbnail.aspx?width=200&height=300&src=upload/test.jpg
绝对地址:
Thumbnail.aspx?width=200&height=300&src=http://www.test.com/upload/test.jpg
Util.cs 的部分代码:
1
/// <summary>
2
/// 创建缩略图
3
/// </summary>
4
/// <param name="src">来源页面
5
/// 可以是相对地址或者绝对地址
6
/// </param>
7
/// <param name="width">缩略图宽度</param>
8
/// <param name="height">缩略图高度</param>
9
/// <returns>字节数组</returns>
10
public static byte[] MakeThumbnail(string src, double width, double height)
11
{
12
Image image;
13![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
// 相对路径从本机直接读取
15
if (src.ToLower().IndexOf("http://") == -1)
16
{
17
src = HttpContext.Current.Server.MapPath(src);
18
image = Image.FromFile(src, true);
19
}
20
else // 绝对路径从 Http 读取
21
{
22
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(src);
23
req.Method = "GET";
24
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
25
Stream receiveStream = resp.GetResponseStream();
26
image = Image.FromStream(receiveStream);
27
resp.Close();
28
receiveStream.Close();
29
}
30
double newWidth, newHeight;
31
if (image.Width > image.Height)
32
{
33
newWidth = width;
34
newHeight = image.Height*(newWidth/image.Width);
35
}
36
else
37
{
38
newHeight = height;
39
newWidth = (newHeight/image.Height)*image.Width;
40
}
41
if (newWidth > width)
42
{
43
newWidth = width;
44
}
45
if (newHeight > height)
46
{
47
newHeight = height;
48
}
49
//取得图片大小
50
Size size = new Size((int) newWidth, (int) newHeight);
51
//新建一个bmp图片
52
Image bitmap = new Bitmap(size.Width, size.Height);
53
//新建一个画板
54
Graphics g = Graphics.FromImage(bitmap);
55
//设置高质量插值法
56
g.InterpolationMode = InterpolationMode.High;
57
//设置高质量,低速度呈现平滑程度
58
g.SmoothingMode = SmoothingMode.HighQuality;
59
//清空一下画布
60
g.Clear(Color.White);
61
//在指定位置画图
62
g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height),
63
new Rectangle(0, 0, image.Width, image.Height),
64
GraphicsUnit.Pixel);
65
///文字水印
66
//System.Drawing.Graphics G=System.Drawing.Graphics.FromImage(bitmap);
67
//System.Drawing.Font f=new Font("宋体",10);
68
//System.Drawing.Brush b=new SolidBrush(Color.Black);
69
//G.DrawString("myohmine",f,b,10,10);
70
//G.Dispose();
71
///图片水印
72
//System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
73
//Graphics a = Graphics.FromImage(bitmap);
74
//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
//copyImage.Dispose();
76
//a.Dispose();
77
//copyImage.Dispose();
78
//保存高清晰度的缩略图
79
MemoryStream stream = new MemoryStream();
80
bitmap.Save(stream, ImageFormat.Jpeg);
81
byte[] buffer = stream.GetBuffer();
82
g.Dispose();
83
image.Dispose();
84
bitmap.Dispose();
85
return buffer;
86
}
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
3
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
10
![](https://rchen.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
专门输出缩略图的页面 Thumbnail.aspx.cs 代码:
1
namespace JCDWeb
2
{
3
using System;
4
using System.Web.UI;
5![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
public class Thumbnail : Page
7
{
8
private void Page_Load(object sender, EventArgs e)
9
{
10
string src = GetQueryStringSrc();
11
double width = GetQueryStringWidth();
12
double height = GetQueryStringHeight();
13![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
Response.ContentType = "image/jpeg";
15
Response.Clear();
16![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
if (src.Length > 0 && width > 0 && height > 0)
18
{
19
try
20
{
21
byte[] buffer = Util.MakeThumbnail(src, width, height);
22
Response.BinaryWrite(buffer);
23
Response.Flush();
24
}
25
catch
26
{
27![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
}
29
}
30
}
31![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
#region handle query string
33![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
private string GetQueryStringSrc()
35
{
36
string src = Request.QueryString["src"];
37
src = (src == null) ? "" : src;
38
return src;
39
}
40![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
private double GetQueryStringWidth()
42
{
43
string sWidth = Request.QueryString["width"];
44
sWidth = (sWidth == null) ? "" : sWidth;
45
double width = 0;
46
try
47
{
48
width = double.Parse(sWidth);
49
}
50
catch
51
{
52
}
53
return width;
54
}
55![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
private double GetQueryStringHeight()
57
{
58
string sHeight = Request.QueryString["height"];
59
sHeight = (sHeight == null) ? "" : sHeight;
60
double height = 0;
61
try
62
{
63
height = double.Parse(sHeight);
64
}
65
catch
66
{
67
}
68
return height;
69
}
70![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
#endregion
72![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
Web Forms Designer generated code
87
}
88
}
![](https://rchen.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
67
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](https://rchen.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
87
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
88
![](https://rchen.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
调用方法:
相对地址:
Thumbnail.aspx?width=200&height=300&src=upload/test.jpg
绝对地址:
Thumbnail.aspx?width=200&height=300&src=http://www.test.com/upload/test.jpg