Web前端开发之水印、图片验证码


Posted in Javascript onNovember 27, 2016

一、水印

1.画布

System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);

2.创建绘制对象,告诉它往哪张图片上绘制

Graphics g = Graphics.FromImage(img);

3.绘制的内容

string s = www.itnba.com;

4.绘制的字体

Font f = new Font("黑体",130);

5.绘制的画刷

Brush b = new SolidBrush(Color.Red);

6.开始绘制

g.DrawString(s, f, b, 5, 5);

二、图片验证码

Bitmap bit = new Bitmap(90, 40);//画布大小
    Graphics g = Graphics.FromImage(bit);//创建绘制对象,告诉它往哪张图片上绘制
    Random r = new Random();
    string s = "";
    Color color1 = Color.FromArgb(r.Next(155, 255), r.Next(155, 255), r.Next(155, 255));
    g.FillRectangle(new SolidBrush(color1), 0, 0, 90, 40);//画布颜色随机
    for (int i = 0; i < 10; i++)//随机画干扰线
    {
      Color color3 = Color.FromArgb(r.Next(170, 255), r.Next(190, 255), r.Next(170, 255));
      Pen pp = new Pen(new SolidBrush(color3), r.Next(0, 5));
      g.DrawLine(pp, r.Next(0, 90), r.Next(0, 40), r.Next(0, 90), r.Next(0, 40));
    }
    string yan = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";//设置随机的验证码,从里面抽取
    int wei = 0;
    for (int i = 0; i < 4; i++)//取四位验证码,颜色随机
    {
      string m = yan.Substring(r.Next(0, yan.Length), 1);
      s += m;
      Color color2 = Color.FromArgb(r.Next(0, 155), r.Next(0, 155), r.Next(0, 155));
      int w = r.Next(20, 25);
      Font f = new Font("黑体", w);
      SolidBrush b = new SolidBrush(color2);
      g.DrawString(m, f, b, wei, r.Next(0, 10));
      wei += w;
    }
    Session["YZM"] = s;//把验证码保存到session中
    for (int i = 0; i < 251; i++)
    {
      Color color3 = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
      Pen pp = new Pen(new SolidBrush(color3), r.Next(0, 5));
      int a = r.Next(0, 90);
      int b = r.Next(0, 40);
      g.DrawLine(pp, a, b, (a + 1), (b + 1));
    }
    bit.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    Response.End();

验证码:

<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    <asp:Image ID="Image1" runat="server" ImageUrl="Default2.aspx" />//这里图片路径不是一张图片的话会默认打开

以上所述是小编给大家分享的Web前端开发之水印、图片验证码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery UI Dialog 创建友好的弹出对话框实现代码
Apr 12 Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 Javascript
JavaScript创建一个object对象并操作对象属性的用法
Mar 23 Javascript
浅谈javascript属性onresize
Apr 20 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
解决node修改后需频繁手动重启的问题
May 13 Javascript
完美解决linux下node.js全局模块找不到的情况
May 16 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
Sep 14 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 #Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 #Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 #Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 #Javascript
JS自定义混合Mixin函数示例
Nov 26 #Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 #Javascript
JS匿名函数类生成方式实例分析
Nov 26 #Javascript
You might like
[转帖]PHP世纪万年历
2006/12/06 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
简单介绍Python中的len()函数的使用
2015/04/07 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
深入学习python多线程与GIL
2019/08/26 Python
python 默认参数相关知识详解
2019/09/18 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python tornado上传文件的功能
2020/03/26 Python
python re的findall和finditer的区别详解
2020/11/15 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
美发活动策划书
2014/01/14 职场文书
绿色学校实施方案
2014/03/31 职场文书
安全生产专项整治方案
2014/05/06 职场文书
音乐教师个人总结
2015/02/06 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书