1 原有图片添加水印
1.1 封装一个类,用于获取文件路径
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace _06_图片处理{ public static class FileHelper { public static string GetFilePath() { //02 创建文件保存路径 string savePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload\\"); //02-01 根据日期创建文件夹 DateTime dt = DateTime.Now; savePath += dt.Year + "\\" + dt.Month + "\\" + dt.Day; if (!Directory.Exists(savePath)) { //创建文件夹 Directory.CreateDirectory(savePath); } //02-02文 件名为当前时间 //savePath += "\\" + dt.ToString().Replace(':', '-') + ".gif"; savePath += "\\" + dt.ToString().Replace(':', '-') ; return savePath; } }}
1.2 html页面和ashx页面
using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Web;namespace _06_图片处理{ ////// AddLogo 的摘要说明 /// public class AddLogo : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //01 获取上传图片 HttpPostedFile pf = context.Request.Files["OrImg"]; #region 02 添加水印 //02-01 创建画布 Bitmap bm = new Bitmap(pf.InputStream); //02-02 创建绘图工具 Graphics gs = Graphics.FromImage(bm); //02-03 拿到logo图片 Bitmap bmLogo = new Bitmap(AppDomain.CurrentDomain.BaseDirectory + "/images/LogoYK.GIF"); //02-04 开始绘制 gs.DrawImage(bmLogo,bm.Width-bmLogo.Width,bm.Height-bmLogo.Height,bmLogo.Width,bmLogo.Height); #endregion #region 03 保存 //03-01 获取文件扩展名 string extName = pf.FileName.Substring(pf.FileName.LastIndexOf('.')); //03-02 获取文件路径 string ph = FileHelper.GetFilePath(); string savePath = ph + extName; //03-03 saveAs bm.Save(savePath); #endregion //04 展示 context.Response.Write(" "); } public bool IsReusable { get { return false; } } }}
1.3 运行效果
2 验证码
2.1 ashx页面
using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Web;using System.Drawing.Imaging;namespace _06_图片处理{ ////// ValidateCode 的摘要说明 /// public class ValidateCode : IHttpHandler { public void ProcessRequest(HttpContext context) { //01 验证码是图片,所以修改Type context.Response.ContentType = "image/jpeg"; //02 创建画布 Bitmap bm = new Bitmap(70,30); //03 创建绘图工具 Graphics g = Graphics.FromImage(bm); //03-01 设置背景色 g.Clear(Color.Green); //04 准备绘制 string strArry = "abcdefghijklmnopqrstuvwxyz0123456789"; string vCode = string.Empty; Random r = new Random (); for (int i = 0; i < 4; i++) { vCode += strArry[r.Next(strArry.Length)]; } //05 开始绘制 g.DrawString(vCode,new Font (new FontFamily("宋体"),20),new SolidBrush(Color.Red),0,0); //06 保存 bm.Save(context.Response.OutputStream,ImageFormat.Jpeg); //context.Response.Write("Hello World"); } public bool IsReusable { get { return false; } } }}
2.2 HTML页面
html
2.3 效果图
3 缩略图
3.1 HTML页面和ashx代码
using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Web;namespace _06_图片处理{ ////// SmallImag 的摘要说明 /// public class SmallImag : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //01 获取上传对象 HttpPostedFile hf = context.Request.Files["OrImg"]; //01-01 获取文件名称和后缀名 string name = hf.FileName; string extName = hf.FileName.Substring(hf.FileName.IndexOf('.')); //01-02 获取文件路径 和 相对路径 string path = FileHelper.GetFilePath(); string showPath = path.Substring(path.IndexOf("Upload")); //02 保存原图片 hf.SaveAs(path+extName); #region 03 绘制缩略后的小图 //03-00 规定缩放比例 float scale = 0.3f; //03-01 获取原图片 Bitmap bmBig = new Bitmap(hf.InputStream); //03-02 创建画布 Bitmap bm = new Bitmap((int)(bmBig.Width * scale),(int)(bmBig.Height * scale)); //03-03 获取绘制工具 Graphics g = Graphics.FromImage(bm); //03-04 开始绘制 g.DrawImage(bmBig, 0, 0, (bmBig.Width * scale), (bmBig.Height * scale)); #endregion //04 保存缩略图 bm.Save(path +"_small"+ extName); //05 展示缩略图 context.Response.Write(""); } public bool IsReusable { get { return false; } } }}
3.2 效果图