" http://www.w3.org/1999/xhtml " > <meta http-equiv= " Content-Type " content= " text/html; charset=utf-8 " /> <title></title> </head> <form action= " Getmin.ashx " method= " post " enctype= " multipart/form-data " > 图片: <input type= " file " name= " file " id= " file " onchange= " javascript:fileInfo(); " /> <p style= " font-size:12px; " >原图宽:<label id= " ow " > 0 </label>&nbsp;原图高:<label id= " oh " > 0 </label>& nbsp; 原图大小: <label id= " os " > 0 </label>KB</p> <p>设置宽度:<input type= " text " name= " width " style= " width:50px; " /> <span style= " color:#09a02c;font-size:12px " >高度按原图比例折算</span></p> <p><input type= " submit " style= " color:#ff6a00 " value= " 下载缩略图 " /> </p> </form> </body> </html> <script type= " text/javascript " > // 上传前获取图片信息(用html5的File) function fileInfo() { var f = document.getElementById( " file " ).files[ 0 ]; var reader = new FileReader(); reader.readAsDataURL(f); reader.onload = function (e) { var data = e.target.result; // 加载一个图片获取宽度高度 var image = new Image(); image.src = data; image.onload = function () { var width = image.width; var height = image.height; var size = parseInt(f.size / 1024 ); document.getElementById( " ow " ).innerHTML = width; document.getElementById( " oh " ).innerHTML = height; document.getElementById( " os " ).innerHTML = size; </script>

2.添加一个一般处理程序:Getmin.ashx

 public void ProcessRequest(HttpContext context)
            //1.获取用户上传的文件流
            HttpPostedFile file = context.Request.Files[0];
            //获取文件名
            string fileName = file.FileName;
            //获取扩展名
            string Extension = Path.GetExtension(fileName).ToUpper();
            //2.根据用户上传的文件流创建一个图片
            using (Image originalImage = Image.FromStream(file.InputStream))
            //获取原始图片的宽和高
                int owidth = originalImage.Width;
                int oheight = originalImage.Height;
                //缩略图的宽
                int mwidth = Convert.ToInt32(context.Request.Form["width"]);
                //等比例的高,取整数
                int mheight = mwidth * oheight / owidth;
                //3.根据原始图片,等比例创建一个缩小后的图片
                using (Image minImage = new Bitmap(mwidth, mheight))
                   //4.把大图片内容画到小图片上
                    //基于小图创建一个画布对象
                    Graphics gmin = Graphics.FromImage(minImage);
                    //把大图画到小图上
                    gmin.DrawImage(originalImage, 0, 0, mwidth, mheight);
                    //5.下载缩略图
                    MemoryStream ms = new MemoryStream();
                    //判断图片类型
                    ImageFormat imageFormat = null;
                    string ContentType = "";
                    switch (Extension)
                        case ".JPG": imageFormat = ImageFormat.Jpeg; ContentType = "image/jpeg"; break;
                        case ".PNG": imageFormat = ImageFormat.Png; ContentType = "image/png"; break;
                        case ".GIF": imageFormat = ImageFormat.Gif; ContentType = "image/gif"; break;
                        //................如需要其他图片格式继续添加
                    minImage.Save(ms,imageFormat);
                    context.Response.ClearContent();
                    context.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); 
                    context.Response.ContentType=ContentType;
                    context.Response.BinaryWrite(ms.ToArray());
                    context.Response.End();
        public bool IsReusable
                return false;

代码注释已经很清晰了,所以也不一一解析了。

 3.1挑一张计算机里的图片:

3.2上传前:

3.3把宽度设成200后点击下载

3.4查看已经下载的文件

demo下载:http://pan.baidu.com/s/1jHiIXuQ  提取密码:fewx