asp.net 将大图压缩成小图片在首页上显示,为了加快显示速度-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

asp.net 将大图压缩成小图片在首页上显示,为了加快显示速度

2016-03-12 09:56:57 2136 1

首页上显示图片,缩略图,图片在大图的基础上压缩成小图,然后在首页上显示

取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 19:00:13

    给你一个思路:url重写

    /// 
    /// ResponseImg 的摘要说明
    /// 
    public class ResponseImg : IHttpHandler
    {
    static readonly DateTime Refresh;
    static readonly DateTime Now;
    static ResponseImg()
    {
    Now = DateTime.Now;
    Refresh = Now.AddMonths(1);
    }
    
        public void ProcessRequest(HttpContext context)
        {
    
            if (!string.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"]))
            {
                DateTime IfModifiedSince = DateTime.Parse(context.Request.Headers["If-Modified-Since"]);
                if (IfModifiedSince > Now)
                {
                    context.Response.StatusCode = 304;
                    return;
                }
            }
    
            //string folder = context.Request.QueryString["Folder"];
            string filepath = context.Request.QueryString["FilePath"];
            int width = int.Parse(context.Request.QueryString["Width"]);
            int height = int.Parse(context.Request.QueryString["Height"]);
            string hex = context.Request.QueryString["Hex"];
    
            string path = context.Server.MapPath(string.Format("/QshopImg/{0}", filepath));
    
            byte[] bytes = ImageHelper.Reset(path, width, height);//这个是我写的图片压缩方法 你自己重新上网找
            //System.Drawing.Image img = ImageHelper.Reset(bytes, width, height);
    
            context.Response.Headers["Last-Modified"] = Refresh.ToString();
            //context.Response.Cache.SetExpires(DateTime.Now.Add(Refresh));
            //context.Response.Cache.SetMaxAge(refresh);
            context.Response.Cache.SetCacheability(HttpCacheability.Public);
            context.Response.CacheControl = HttpCacheability.Public.ToString();
            context.Response.Cache.SetValidUntilExpires(true);
            //context.Response.StatusCode = 304;
            //img.Save(context.Response.OutputStream, ImageHelper.GetImageFormat(path));
            context.Response.ContentType = "image/" + hex;
    
            context.Response.BinaryWrite(bytes);
    
        }
    
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    
    
    
            <rewrite url="~/(p_img\d{3}/.+?)_(\d{1,3})x(\d{1,3})\.(jpg|jpeg|png|gif|bmp)$"
             to="~/ResponseImg.ashx?FilePath=$1&amp;Width=$2&amp;Height=$3&amp;Hex=$4"/>
                    比如原图片的是/xxx/yyy.png
                    /xxx/yyy_64x64.png 
                    那么就会请求到ResponseImg.ashx 同时把原来的图片压缩成64*64 再输出
    
                    你还可以把压缩后的图片缓存起来,避免再次压缩
    0 0
相关问答

1

回答

浏览器打开oss 图片url 显示不可信

2019-01-25 15:27:08 928浏览量 回答数 1

2

回答

在HTML&CSS中,如何最科学地将文字显示在图片正中间?

2016-06-02 09:40:05 2275浏览量 回答数 2

1

回答

asp环境中如何把从文本域中获得的日期(格式为yyyy/mm/dd)加上特定天数后显示在新文本域中?

2016-06-07 15:24:25 1755浏览量 回答数 1

1

回答

请问图片上是不是服务器空间的根目录?ftp

2017-06-20 10:50:42 1859浏览量 回答数 1

1

回答

Java 用common-net 连接ftp 上传图片下载下来损坏

2017-07-04 09:43:59 2353浏览量 回答数 1

2

回答

OSS FTP无法一直监听,而且重启服务器不自动启动ftp

2016-12-25 10:49:44 2495浏览量 回答数 2

0

回答

在asp.net5中如何使用SaltUI

2016-06-23 14:23:55 3176浏览量 回答数 0

1

回答

如何在函数内获取 http post 的请求的 body?

2021-03-11 23:00:41 549浏览量 回答数 1

1

回答

想浏览datav时候自动下载png图片,链接后边加什么可以实现。

2021-03-18 22:33:06 654浏览量 回答数 1

1

回答

mybatis怎么实现根据id 显示两个表的内容连接?

2021-09-29 13:01:13 244浏览量 回答数 1
文章
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载