博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
结对项目博客
查看>>
讨论记录:求大于一个时间段的最大平均积分,O(n)时间实现
查看>>
error) DENIED Redis is running in protected mode because protected mode is enabled报错
查看>>
CSS-16-margin值重叠问题
查看>>
selenium常用方法
查看>>
第二次作业
查看>>
ios 面试题
查看>>
MySQL教程(二)—— 关于在ACCESS中使用SQL语句
查看>>
实验4.1
查看>>
接口Interface
查看>>
bzoj 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚【贪心+堆||差分】
查看>>
bzoj 1710: [Usaco2007 Open]Cheappal 廉价回文【区间dp】
查看>>
电商:购物车模块解决思路
查看>>
Java中的Map List Set等集合类
查看>>
大道至简阅读笔记01
查看>>
多个模块使用python logging
查看>>
Linux高级变量
查看>>
php ffmpeg
查看>>
java中== 和 .equals()的区别
查看>>
网络流学习笔记
查看>>