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

你可能感兴趣的文章
Ztree加载完成后显示勾选节点
查看>>
HDU 3401
查看>>
asp.net中XmlDocument解析出现出错,处理特殊字符
查看>>
unable to locate package gparted
查看>>
Centos7安装Mysql
查看>>
Hadoop伪分布安装配置
查看>>
idhttp.post方式 调用datasnap rest 远程方法(转咏南兄)
查看>>
jQuery包裹节点用法完整示例
查看>>
EL表达式中,param和requestScope的区别
查看>>
AngularJs angular.element
查看>>
利用HUtool读取Excel内容
查看>>
浅析libuv源码-node事件轮询解析(1)
查看>>
JS——try catch throw
查看>>
Python 学习2
查看>>
在Recyclerview使用GlideAPP加载大量图片导致内存溢出(oom)
查看>>
js代码格式化工具(格式化、压缩、加密压缩)
查看>>
HTML特殊符号
查看>>
【vijos P1914】【codevs 3904】[NOIP2014 普及组T4]子矩阵(dfs+状压dp)
查看>>
MySQL 处理海量数据时一些优化查询速度方法
查看>>
ubuntu 安装nginx 并开启目录浏览功能
查看>>