ASP.NET接收图片同时按比例生成缩略图保存到项目文件夹
string dir = context.Server.MapPath("UploadImages/" + number + "_" + createtimestamp);//上传原图的文件夹
if (!Directory.Exists(dir))//如果文件夹不存在
{
Directory.CreateDirectory(dir);//创建文件夹
}
HttpFileCollection files = context.Request.Files;//多图片接收
if (files.Count > 0)
{
for (int i = 0; i < files.Count; i++)
{
int num = i + 1;
string filename = uptimestamp + "_" + num + ".jpg";//图片名称
string path = System.IO.Path.Combine(dir, filename);//保存原图的完整路径
files[i].SaveAs(path);//保存图片
string origraph = "UploadImages/" + number + "_" + createtimestamp + "/" + filename;//原图url
string newdir = context.Server.MapPath("ThumbNail/" + number + "_" + createtimestamp);//上传缩略图的文件夹
if (!Directory.Exists(newdir))//如果文件夹不存在
{
Directory.CreateDirectory(newdir);//创建文件夹
}
string newpath = System.IO.Path.Combine(newdir, filename);//保存缩略图的完整路径
string thumbnail = "ThumbNail/" + number + "_" + createtimestamp + "/" + filename;//缩略图url
Image img = Image.FromFile(path);//获取原图
GetReducedImage(img, newpath, 0.3);//保存缩略图
}
}
else
{
Boolean status = false;
//对象
ActivityModel model = new ActivityModel
{
Status = status,
Message = "图片不能为空!",
};
//对象序列化Json
string strJson = JsonConvert.SerializeObject(model);
context.Response.ContentType = "text/plain";
context.Response.Write(strJson);
}
按比例生成缩略图
public Image ResourceImage;//原图
private int ImageWidth; //缩略图宽度
private int ImageHeight; //缩略图高度
//按比例生成缩略图
/// <param name="ResourceImage">原图</param>
/// <param name="targetFilePath">缩略图保存的完整路径,参数格式:D:Images ilename.jpg</param>
/// <param name="Percent">原图缩小的百分比,如:需要80%,就填0.8</param>
public void GetReducedImage(Image ResourceImage, string targetFilePath, double Percent)
{
try
{
Image ReducedImage;
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
ImageHeight = Convert.ToInt32(ResourceImage.Height * Percent);
ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
ReducedImage.Dispose();
}
catch (Exception ex)
{
log.Error(ex);//捕获异常,将异常写入日志
}
}
在Web.config添加配置
<system.web>
<httpRuntime maxRequestLength="2097151" /><!--maxRequestLength (指示 ASP.NET 支持的最大文件上载大小)-->
</system.web>
<system.webServer>
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength="2147483647" ></requestLimits><!--上传的文件限制在2G以内-->
</requestFiltering>
</security>
</system.webServer>