asp.net处理网络返回图片
本文参考糅合自以下几个网站:
1.参考输出流:http://blog.csdn.net/lusend/article/details/8299398
2.参考二进制流转换(本文没用到):http://developer.51cto.com/art/200908/143612.htm
3.参考bitmap和image之间格式转换:http://www.cnblogs.com/peasana/archive/2012/02/13/2349165.html
4.参考页面不存在的时候返回图片:http://www.cnblogs.com/lema/archive/2010/12/10/1902679.html
5.参考返回无效图片时候,httpcontext用法:http://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html
6.图片处理主要参考自(这个可以用于,我们本地电脑上的图片处理,画图不好用的时候可以参考这个):http://www.cnblogs.com/qfb620/archive/2010/05/22/1741519.html
不得不说,我对c#略微熟悉,对于asp.net来说,完全是没接触过,虽然传说2个本质上没区别,无奈接了个同事的要求,帮忙处理网络上的大图片,到手机上显示小图。搞了整整半天,才知道我在做的是asp.net,之前的半天,连项目也没建立起来,这种情况下,不能说我这个小白能够完全处理好,达到了理想状态,至少,侥幸能把上百K的图片,变成3到5k了,还是有不少收获的,参考了好多大牛写的文章,开篇已经列出。本文就是对上文文章剪剪裁裁获得的。
一篇好的代码不需要过多注释,相信聪明的你一定能够看懂。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 |
private
const string DefaultimageUrl = "Default.jpg" ; protected
void Page_Load( object
sender, EventArgs e) { string
a = Request.QueryString.Get( "id" ); //这个是指的,传参的时候必须上?id=xx,不然就无效 HttpR(a); } private
void HttpR( string
id) { WebRequest wreq = WebRequest.Create(uri); try { var
wresq = (HttpWebResponse) wreq.GetResponse(); Stream stream = wresq.GetResponseStream(); if
(stream != null ) { Image img = Image.FromStream(stream); Convert(img); } } catch
(Exception) { ProcessRequest(); } } //输出默认图片 private
static void ProcessRequest() { HttpContext context = HttpContext.Current; if
(context != null ) { Image image = Image.FromFile(context.Server.MapPath(DefaultimageUrl)); context.Response.ContentType = "image/jpeg" ; image.Save(context.Response.OutputStream, ImageFormat.Jpeg); image.Dispose(); } } private
void Convert(Image picPath) { var
originBmp = (Bitmap) picPath; //根据需求调整宽高 const
int width = 80, hight = 110; //绘制图片 var
resizedBmp = new
Bitmap(width, hight); Graphics g = Graphics.FromImage(resizedBmp); g.InterpolationMode = InterpolationMode.Low; g.SmoothingMode = SmoothingMode.Default; g.CompositingQuality = CompositingQuality.HighSpeed; g.SmoothingMode = SmoothingMode.HighSpeed; g.DrawImage(originBmp, new
Rectangle(0, 0, width, hight), new
Rectangle(0, 0, originBmp.Width, originBmp.Height), GraphicsUnit.Pixel); //输出图片 var
ms = new
MemoryStream(); resizedBmp.Save(ms, ImageFormat.Jpeg); Response.ClearContent(); Response.ContentType = "image/Jpeg" ; Response.BinaryWrite(ms.ToArray()); //释放所有内存流 g.Dispose(); resizedBmp.Dispose(); originBmp.Dispose(); ms.Dispose(); } |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。