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)

        {

            string
uri = "http://xxx"
+ id + ".jpg";

            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();

        }

  

时间: 2024-10-10 22:57:06

asp.net处理网络返回图片的相关文章

android客户端加载网络大图片如何避免内存溢出

在Android开发中加载sdcard上的大图片到内存时容易导致OOM异常,常见的解决办法是基于BitmapFactory.Options类提供的方法定义指定的解码方式,设置inJustDecodeBounds属性为true,避免分配内存,返回一个null的Bitmap对象(包含outWidth,outHeightandoutMimeType),然后读取图片的尺寸和类型.再根据屏幕的高和宽对图片进行缩放,最后将缩放的图片加载到内存,主要代码如下: 1 Options opts = new Opt

asyncTask异步任务:从网络下载图片

[关键字]:3个参数,4个步骤 第一步:表示任务执行前的操作 第二步:主要完成耗时操作 第三步:主要是更新UI操作 第四步:产生最终结果 以下实例中代表的含义为: 第一步:显示进度条 第二步:(此任务必不可少)在后台执行任务,将进度值传给第三步,将结果传给第四步: 第三步:进度值更新 第四步:产生最终结果 1.添加网络授权: 因为手机默认不能访问网络,所以首先要在清单文件 AndroidManifest.xml中添加网络授权. 方法如下: 打开AndroidManifest.xml文件,点击"P

ASP.NET MVC实现剪切图片

开发需要,我们需要对某一张图片进行剪切.就是说,获取图片某一区域.下面Insus.NET教大家轻便容易实现它. 首先写好一个处理函数,它建在MVC应用程序结构Utilities目录下: 准备好一张图片,即是将用来剪切的图片.本例中的图片是从http://cn.bing.com下载,版权所属原作发布者所有.放在UploadFiles内. 创建控制器: 根据上面第一个Action名称,创建一个视图来演示: 标记3,是链接,使用哪一个控制器内,哪一个方法. 标记4,获取与呈现控制器方法返回的数据. 演

从本地或者网络读取图片,并转换为Bitmap图片

在做android项目时,我们经常需要从本地或者网络读取图片,并转换为Bitmap图片,以便使用,下面是读取本地图片并转换的方法: Java代码   /** * 得到本地或者网络上的bitmap url - 网络或者本地图片的绝对路径,比如: * * A.网络路径: url="http://blog.foreverlove.us/girl2.png" ; * * B.本地路径:url="file://mnt/sdcard/photo/image.png"; * * 

网络下载图片 (cell部分)

网络下载图片不能放在主线程: 1.会阻塞主线程:影响用户体验 2.重复下载,浪费流量,浪费时间 推荐第三方框架SDWebImage, 包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等. 导入这个分类:#import "UIImageView+WebCache.h"

android从网络获取图片

http://blog.csdn.net/wangjinyu501/article/details/8219317 http://www.cnblogs.com/JerryWang1991/archive/2012/03/09/2388312.html http://blog.csdn.net/liuhe688/article/details/6532519 http://blog.csdn.net/abc5382334/article/details/17097633 http://www.t

安卓网络请求图片到图片的三级缓存技术(内存缓存,本地缓存,网络缓存)

安卓网络请求图片,对于我们来说并不陌生,因为每个应用都有可能会用到这一技术.通常情况下,我们第一次都是从网络上请求图片资源,然后将 图片资源保存到内存和本地,下一次动态显示图片的时候就不需要再从网络上请求图片资源了,直接从本地或者内存中获取就可以了.这就涉及到图片 的三级缓存技术,分别是内存缓存,本地缓存,网络缓存. 缓存的流程图: 首先我们定义一个类叫ClassLoader: package com.jsako.showprodinfodemo; import java.io.FileOutp

(android开源库android-gif-drawable)第二篇 加载网络gif图片

大家好,  今天给大家带来如何使用 android开源库android-gif-drawable来 加载网络gif图片 同样的DEMO下载地址在 最后 请大家去下载 . 如果gif图片地址无效 了.      请大家自行到网上去寻找一个 gif图片地址 复制过去就可以了.谢谢大家 不会在 eclipse下使用  (android开源库android-gif-drawable)     请看我的这篇博客   (android开源库android-gif-drawable)第一篇 eclipse使用

coco2dx jni 调用 java 相机返回 图片数据

新建 一个项目 名字:testJin  包名:com.TanSon.org  python命令:python create_project.py -project testJin -package com.TanSon.org -language cpp eclipse 导入项目配置 ... 略去,(可以google) 1 c++ 调用 andriod 1.1 包含头文件 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.