asp.net 保存图片 生成缩略图

时间:2021-12-26 13:42:16


利用C#.Net的FileUpload或者HtmlInputFile控件上传文件,首先保存上传文件,然后生产缩略图文件并保存

1、验证并生成文件名

            string strSiteFileName = null;
string strSiteUrl = this.fu_Site_Img.PostedFile.FileName.Trim(); //取得文件路径
if (strSiteUrl != "" && strSiteUrl != null)
{
string strImgType = strSiteUrl.Substring(strSiteUrl.LastIndexOf(".")); //取得文件扩展名
if (strImgType.ToLower() != ".gif" && strImgType.ToLower() != ".jpeg" && strImgType.ToLower() != ".jpg" && strImgType.ToLower() != ".png" && strImgType.ToLower() != ".bmp")
{
throw new Exception("只能保存.gif|.jpg|.jpeg|.png或.bmp格式的图片!");
}
if (this.fu_Site_Img.PostedFile.ContentLength > 1024000)
{
throw new Exception("文件大小不能超过1M!");
}
Random rd = new Random();
strSiteFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + rd.Next(100, 999).ToString() + strImgType.ToLower();
}

2、上传文件

                if (strSiteFileName != null)
{
string strFilePath = Server.MapPath(@"../../NewStyle/corpImage/" + strSiteFileName);
HttpPostedFile upfile;
upfile = this.fu_Site_Img.PostedFile;

//保存原文件
upfile.SaveAs(strFilePath);

//生成缩略图保存
System.Drawing.Image image = System.Drawing.Image.FromStream(upfile.InputStream);
int width = image.Width;
int height = image.Height;

int max = 500;
if (width > max || height > max)
{
try
{
System.Drawing.Image newPic; //定义新位图对象
if (width > height)
{
newPic = new Bitmap(image, max, height * max / width); //缩放
}
else
{
newPic = new Bitmap(image, width * max / height, max); //缩放
}
newPic.Save(strFilePath, System.Drawing.Imaging.ImageFormat.Jpeg); //将处理后的图片保存成Png文件
}
catch (System.Exception ex)
{
throw ex;
}
}
}