博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
步步为营-71-asp.net的简单练习(图片处理)
阅读量:4672 次
发布时间:2019-06-09

本文共 5428 字,大约阅读时间需要 18 分钟。

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;        }     }}
FileHelper

1.2 html页面和ashx页面

html
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;            }        }    }}
AddLogo.ashx

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;            }        }    }}
ashx

2.2 HTML页面

看不清,换一张
html

2.3 效果图

3 缩略图

3.1 HTML页面和ashx代码

html
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;            }        }    }}
SmallImag.ashx

3.2 效果图

转载于:https://www.cnblogs.com/YK2012/p/7011291.html

你可能感兴趣的文章
delphi 枚举类型与字符串的转换
查看>>
UVA-10689 Yet another Number Sequence (矩阵二分幂模板)
查看>>
element自定义表单验证
查看>>
Mysql 存储引擎的区别和比较
查看>>
vue管理平台的动态路由(后台传递路由,前端拿到并生成侧边栏)
查看>>
HDU 5412 CRB and Queries 动态整体二分
查看>>
TJU1044
查看>>
shell 查看系统信息
查看>>
Questions
查看>>
我和我的博客
查看>>
使用window.navigator.userAgent属性判断浏览器类型及版本
查看>>
js各种数字类型互转的方法
查看>>
noi.openjudge——2971 抓住那头牛
查看>>
【ueditor】api方法
查看>>
获取当前页面url并截取所需字段
查看>>
空格替换
查看>>
PHP笔记
查看>>
navicat Premium远程链接mysql报错
查看>>
Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
查看>>
C# 将html实体编码转换到正常字符 & #40;格式
查看>>