2011-05-09 12:36:58| 分类: asp.net学习 | 标签:学习 |举报|字号 订阅
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Drawing;
public partial class uploadimagetest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)//判断是否有选择文件
{
if (suffix(FileUpload1.FileName))
{
string dataName = DateTime.Now.ToString("yyyyMMddhhmmssffffff");//产生一个不重复的时间戳,用来拼与一个不重复的名称
string getfullname=FileUpload1.FileName.Trim();//取出这个控件中的文件名
string imglashname = getfullname.Substring(FileUpload1.FileName.LastIndexOf(".") + 1);//取出被上传文件的后缀
FileUpload1.SaveAs(Server.MapPath("imgload/img")+dataName+"."+imglashname);//将文件重新拼出一个新的名字进行保存
MakePic(Server.MapPath("imgload/img") + dataName + "." + imglashname, Server.MapPath("imgload/img") + dataName + "S." + imglashname, 80, 80, "#ffffff", "#ffffff");//上传小图片
MakePic(Server.MapPath("imgload/img") + dataName + "." + imglashname, Server.MapPath("imgload/img") + dataName + "M." + imglashname, 120, 120, "#ffffff", "#ffffff");//上传中图片
MakePic(Server.MapPath("imgload/img") + dataName + "." + imglashname, Server.MapPath("imgload/img") + dataName + "B." + imglashname, 300, 300, "#ffffff", "#ffffff");//上传大图片
if (File.Exists(Server.MapPath("imgload/img") + dataName + "." + imglashname))//判断服务器上有没有(Server.MapPath("imgload/img") + dataName + "." + imglashname)这个文件
{
File.Delete(Server.MapPath("imgload/img") + dataName + "." + imglashname);//执行删除操作
}
}
else
{
Response.Write("<script language='javascript'>alert('请选择的文件类型不对')</script>");
}
}
else
{
Response.Write("<script language='javascript'>alert('请选择文件')</script>");
}
}
private Boolean suffix(string suffixstr)//判断是否为符合的文件类型(后缀suffix)
{
string str = Path.GetExtension(suffixstr);
switch (str.ToLower())
{
case ".gif": return true;
case ".jpg": return true;
default: return false;
}
}
public void MakePic(string sourceImg, string toPath, int width, int height, string backColor, string borderColor)//执行操作的函数
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(sourceImg);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
string mode;
if (ow < towidth && oh < toheight)
{
towidth = ow;
toheight = oh;
}
else
{
if (originalImage.Width / originalImage.Height >= width / height)
{
mode = "W";
}
else
{
mode = "H";
}
switch (mode)
{
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
default:
break;
}
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(width, height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以指定颜色填充
g.Clear(ColorTranslator.FromHtml(backColor));
//在指定位置并且按指定大小绘制原图片的指定部分
int top = (height - toheight) / 2;
int left = (width - towidth) / 2;
g.DrawImage(originalImage, new System.Drawing.Rectangle(left, top, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
Pen pen = new Pen(ColorTranslator.FromHtml(borderColor));
g.DrawRectangle(pen, 0, 0, width - 1, height - 1);
try
{
//以jpg格式保存缩略图
bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
}