·获取上传图片、重命名、创建文件夹保存图片
·获取上传图片及图片信息:
HttpPostedFile file = context.Request.Files[0]; //获取上传的文件
string fileName = Path.GetFileName(file.FileName); //获取上传文件的名称, 包含扩展名
string fileExt = Path.GetExtension(fileName); //获取用户上传的文件扩展名
string newfileName = Guid.NewGuid().ToString(); //文件重命名
string dir = "/ImageUpload/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/"; //通过日期将上传文件放在不同目录下
//创建文件夹,判断文件夹是否存在,不存在则创建
if (!Directory.Exists(context.Request.MapPath(dir)))
{
Directory.CreateDirectory(context.Request.MapPath(dir)); //创建文件夹
}
file.SaveAs(context.Request.MapPath(fullDir)); //保存文件
-
对图片的操作
在.ashx中加载图片
context.Response.Write("<html><body><img src='" + fullDir + "'></body></html>");
图片添加水印
思路:
创建一个和图片文件大小相同的画布
将图片画到画布上
在画布上添加要显示的水印及其格式
将文件保存
实现:
//获取图片信息
using (Image img = Image.FromFile(context.Request.MapPath(fullDir)))
{
//创建画布
using (Bitmap map = new Bitmap(img.Width, img.Height))
{
//创建画笔
using (Graphics g = Graphics.FromImage(map))
{
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//用画笔在画布上画图,从画布左上角开始,将整个图片滑倒画布上。
g.DrawImage(img, 0, 0, img.Width, img.Height);
//添加水印-水印内容,字体样式,颜色,位置
g.DrawString("对方能看到十六分", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(map.Width - 100, map.Height - 25));
//保存为图片
string waterImageName = "water_" + Guid.NewGuid().ToString();
//保存为图片,指定图片类型
map.Save(context.Request.MapPath("/ImageUpload/" + waterImageName + ".jpg"),System.Drawing.Imaging.ImageFormat.Jpeg);
//显示图片
context.Response.Write("<html><body><img src='/ImageUpload/" + waterImageName + ".jpg'/></body></html>");
}
}
}
- 豆腐干