.net上传图片生成大小缩略图

public string GetSqlFile(FileUpload fp, int width, int height)
        {
            string sqlfile = "";
            string tempSqlPath = "";
            string path = HttpContext.Current.Request.PhysicalApplicationPath.ToString() + "upload/";
            path += "UploadFile/" + DateTime.Now.ToString("yyyyMM");
            tempSqlPath = "\\upload\\UploadFile\\" + DateTime.Now.ToString("yyyyMM");
            if (Directory.Exists(path))
            {

            }
            else
            {
                Directory.CreateDirectory(path);
            }
            if (Directory.Exists(path + "/small"))
            {
            }
            else
            {
                Directory.CreateDirectory(path + "/small");
            }
            if (Directory.Exists(path + "/temp"))
            {
            }
            else
            {
                Directory.CreateDirectory(path + "/temp");
            }
            //HttpFileCollection files = HttpContext.Current.Request.Files;

            if (fp.FileName.ToString().Length > 0)
            {
                string filename = fp.FileName.ToString();
                string datestr = DateTime.Now.ToString("yyyyMMddHmmssfff");
                string ext = filename.Substring(filename.LastIndexOf(".")).ToLower();
                if (ext != ".bmp" && ext != ".jpg" && ext != ".gif" && ext != ".jpeg")
                {
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不是.gif,jpg,jpeg,bmp格式')</script>");
                    return "";
                }
                string tempFilePath = path + "/" + "temp/" + datestr + ext;
                fp.SaveAs(tempFilePath);
                #region 生成小图
                string originalFilename = path + "/" + datestr + ext;
               //fp.FileBytes
                //缩小的倍数
                int iScale = 1;
                //从文件取得图片对象
                System.Drawing.Image image = null;
                try
                {
                    image = System.Drawing.Image.FromFile(tempFilePath);
                   
                }
                catch
                {
                    //
                    try
                    {
                        File.Delete(tempFilePath);
                        image.Dispose();

                    }
                    catch
                    {
                    }
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不 是.gif,jpg,jpeg,bmp图片的标准格式格式')</script>");
                    return "";

                }
                int hi = 0;
                int wi = 0;
                wi = width;
                hi = height;
                Size size = new Size(wi, hi);
                //新建一个bmp图片
                System.Drawing.Image bitmap = new Bitmap(size.Width, size.Height);
                //新建一个画板
                Graphics g = Graphics.FromImage(bitmap);
                //设置高质量插值法
                g.InterpolationMode = InterpolationMode.High;
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = SmoothingMode.HighQuality;
                //清空一下画布
                g.Clear(Color.Blue);
                //在指定位置画图
                g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
                if (ext == ".jpg" || ext == ".jpeg")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Jpeg);
                if (ext == ".gif")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Gif);
                if (ext == ".bmp")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Bmp);
                ///大图片
                if (fp.FileBytes.Length > 300000){
                  //image.Width
                   // image.Height


                    wi = 800;

                    hi = Convert.ToInt32(image.Height * (Convert.ToDouble(wi) / Convert.ToDouble(image.Width)));                
                     size = new Size(wi, hi);
                    //新建一个bmp图片
                  bitmap = new Bitmap(size.Width, size.Height);
                    //新建一个画板
                    g = Graphics.FromImage(bitmap);
                    //设置高质量插值法
                    g.InterpolationMode = InterpolationMode.High;
                    //设置高质量,低速度呈现平滑程度
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    //清空一下画布
                    g.Clear(Color.Blue);
                    //在指定位置画图
                    g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
                    if (ext == ".jpg" || ext == ".jpeg")
                        bitmap.Save(originalFilename, ImageFormat.Jpeg);
                    if (ext == ".gif")
                        bitmap.Save(originalFilename, ImageFormat.Gif);
                    if (ext == ".bmp")
                        bitmap.Save(originalFilename, ImageFormat.Bmp);

                }
                else {
                    fp.SaveAs(originalFilename);
                }
                image.Dispose();
                bitmap.Dispose();
                g.Dispose();
                #endregion
                sqlfile = datestr + ext;

                try
                {
                    image.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                    File.Delete(tempFilePath);
                }
                catch (Exception ex)
                {
                    string exc = ex.Message.ToString();
                    HttpContext.Current.Response.Write("<script>alert('" + exc + "');</script>");
                }
            }
            else
            {
                sqlfile = "";
            }
            sqlfile = sqlfile.Length>0?(tempSqlPath + "\\" + sqlfile):("");
            return sqlfile;
        }

posted on 2012-05-03 10:42  水行者  阅读(374)  评论(0编辑  收藏  举报

导航