本文介绍了在C#中实现上传图片后,自动生成缩略图的方法,详细的源代码如下:
if(fileupload.PostedFile!=null)
{
//addto为要添加的属性,aboutfile为文件说明
string nam = fileupload.PostedFile.FileName ;
//取得文件名(抱括路径)里最后一个"."的索引
int i= nam.LastIndexOf(".");
//取得文件扩展名
string newext =nam.Substring(i);
//这里我自动根据日期生成新的文件名,确保文件名不重复
DateTime now = DateTime.Now;
string newname=now.DayOfYear.ToString()+fileupload.PostedFile.ContentLength.ToString();
//保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
//注意: 我这里用Server.MapPath()取当前文件的相对目录.在asp.net里"/"必须用"//"代替,把"upload//"改成"//upload//"就成了取当前文件的绝对目录了
fileupload.PostedFile.SaveAs(Server.MapPath("upload//"+newname+newext));
//得到这个文件的相关属性:文件名,文件类型,文件大小
//fname.Text=myFile.PostedFile.FileName;
//fenc.Text=myFile.PostedFile.ContentType ;
//fsize.Text=myFile.PostedFile.ContentLength.ToString();
//下面是生成缩略图
System.Drawing.Image image,aNewImage;
int width,height,newwidth,newheight;
image=System.Drawing.Image.FromFile(Server.MapPath("upload/"+newname.ToString()+newext.ToString()));
System.Drawing.Image.GetThumbnailImageAbort callb =new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
width=image.Width;
height=image.Height;
if(firstpageshow.SelectedValue.ToString()=="1"&&fenlei.SelectedValue.ToString()=="5")
{
newwidth=203;newheight=86;
newheight=height*newwidth/width;
}
else if(isweekman.SelectedValue.ToString()=="1")
{
newwidth=171;newheight=111;
newheight=height*newwidth/width;
}
else if(firstpageshow.SelectedValue.ToString()=="1"&&fenlei.SelectedValue.ToString()=="3")
{
newwidth=171;newheight=111;
newheight=height*newwidth/width;
}
else
{
newwidth=62;newheight=80;
newheight=height*newwidth/width;
}
aNewImage=image.GetThumbnailImage(newwidth,newheight,callb,new System.IntPtr());
aNewImage.Save(Server.MapPath("upload//"+"small_"+newname+newext));
image.Dispose();
//生成缩略图 生成并保存完毕,保存名是在原图名前加了一个small_。
pic="upload/"+newname.ToString()+newext.ToString();
smallpic="upload/small_"+newname.ToString()+newext.ToString();
}
把这段代码放到上传图片后的处理代码中,看看是否实现了上传图片自动缩略图功能。
新闻热点
疑难解答