首页上显示图片,缩略图,图片在大图的基础上压缩成小图,然后在首页上显示
给你一个思路: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&Width=$2&Height=$3&Hex=$4"/>
比如原图片的是/xxx/yyy.png
/xxx/yyy_64x64.png
那么就会请求到ResponseImg.ashx 同时把原来的图片压缩成64*64 再输出
你还可以把压缩后的图片缓存起来,避免再次压缩
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。