zoukankan
html css js c++ java
.net 环境下带加减法的验证码
ValidCode.aspx.cs
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Drawing;
//
from
http://i.aspx1.com
public
partial
class
Admin_ValidCode : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
this
.CreateCheckCodeImage(GenerateCheckCode());
}
private
string
GenerateCheckCode()
{
int
intFirst, intSec, intTemp;
string
checkCode
=
String.Empty;
System.Random random
=
new
Random();
intFirst
=
random.Next(
1
,
10
);
intSec
=
random.Next(
1
,
10
);
switch
(random.Next(
1
,
3
).ToString())
{
case
"
2
"
:
if
(intFirst
<
intSec)
{
intTemp
=
intFirst;
intFirst
=
intSec;
intSec
=
intTemp;
}
checkCode
=
"
=
"
+
intFirst
+
"
-
"
+
intSec;
Session[
"
ValidCode
"
]
=
intFirst
-
intSec;
break
;
default
:
checkCode
=
"
=
"
+
intFirst
+
"
+
"
+
intSec;
Session[
"
ValidCode
"
]
=
intFirst
+
intSec;
break
;
}
//
Response.Cookies.Add(new HttpCookie("ValidCode",Movie.Common.AES.EncryptAes(checkCode)));
return
checkCode;
}
产生波形滤镜效果
#region
产生波形滤镜效果
private
const
double
PI
=
3.1415926535897932384626433832795
;
private
const
double
PI2
=
6.283185307179586476925286766559
;
private
System.Drawing.Bitmap TwistImage(Bitmap srcBmp,
bool
bXDir,
double
dMultValue,
double
dPhase)
{
System.Drawing.Bitmap destBmp
=
new
Bitmap(srcBmp.Width, srcBmp.Height);
//
将位图背景填充为白色
System.Drawing.Graphics graph
=
System.Drawing.Graphics.FromImage(destBmp);
graph.FillRectangle(
new
SolidBrush(System.Drawing.Color.White),
0
,
0
, destBmp.Width, destBmp.Height);
graph.Dispose();
double
dBaseAxisLen
=
bXDir
?
(
double
)destBmp.Height : (
double
)destBmp.Width;
for
(
int
i
=
0
; i
<
destBmp.Width; i
++
)
{
for
(
int
j
=
0
; j
<
destBmp.Height; j
++
)
{
double
dx
=
0
;
dx
=
bXDir
?
(PI2
*
(
double
)j)
/
dBaseAxisLen : (PI2
*
(
double
)i)
/
dBaseAxisLen;
dx
+=
dPhase;
double
dy
=
Math.Sin(dx);
//
取得当前点的颜色
int
nOldX
=
0
, nOldY
=
0
;
nOldX
=
bXDir
?
i
+
(
int
)(dy
*
dMultValue) : i;
nOldY
=
bXDir
?
j : j
+
(
int
)(dy
*
dMultValue);
System.Drawing.Color color
=
srcBmp.GetPixel(i, j);
if
(nOldX
>=
0
&&
nOldX
<
destBmp.Width
&&
nOldY
>=
0
&&
nOldY
<
destBmp.Height)
{
destBmp.SetPixel(nOldX, nOldY, color);
}
}
}
return
destBmp;
}
#endregion
private
void
CreateCheckCodeImage(
string
checkCode)
{
if
(checkCode
==
null
||
checkCode.Trim()
==
String.Empty)
return
;
System.Drawing.Bitmap image
=
new
System.Drawing.Bitmap((
int
)Math.Ceiling((checkCode.Length
*
15.0
)),
25
);
Graphics g
=
Graphics.FromImage(image);
try
{
//
生成随机生成器
Random random
=
new
Random();
//
清空图片背景色
g.Clear(Color.White);
//
画图片的背景噪音线
for
(
int
i
=
0
; i
<
12
; i
++
)
{
int
x1
=
random.Next(image.Width);
int
x2
=
random.Next(image.Width);
int
y1
=
random.Next(image.Height);
int
y2
=
random.Next(image.Height);
g.DrawLine(
new
Pen(Color.Silver), x1, y1, x2, y2);
}
Font font
=
new
System.Drawing.Font(
"
Arial
"
,
16
, (System.Drawing.FontStyle.Bold
|
System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush
=
new
System.Drawing.Drawing2D.LinearGradientBrush(
new
Rectangle(
0
,
0
, image.Width, image.Height), Color.Blue, Color.DarkRed,
1.2f
,
true
);
g.DrawString(checkCode, font, brush,
1
,
1
);
//
画图片的前景噪音点
//
for (int i = 0; i < 100; i++)
//
{
//
int x = random.Next(image.Width);
//
int y = random.Next(image.Height);
//
image.SetPixel(x, y, Color.FromArgb(random.Next()));
//
}
//
image = TwistImage(image, true, 3, 1);
//
画图片的波形滤镜效果
//
画图片的边框线
g.DrawRectangle(
new
Pen(Color.Silver),
0
,
0
, image.Width
-
1
, image.Height
-
1
);
System.IO.MemoryStream ms
=
new
System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType
=
"
image/Gif
"
;
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
查看全文
相关阅读:
Go语言之深入剖析slice
docker-compose 安装以及遇到的错误解决
linux 简单记录9 --服务的访问控制列表(ssh,scp,screen)
linux 简单记录8 --iptables 与 firewalld 防火墙
linux 简单记录7--使用 RAID 与 LVM 磁盘阵列技术(使用LVM扩展磁盘空间)
linux 简单记录6--存储结构与磁盘划分
DNS 域名解析服务
linux运用软链接解决目录空间不足
linux 简单记录5--用户身份与文件权限
ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper
原文地址:https://www.cnblogs.com/wbcms/p/1047997.html
最新文章
hadoop_exporter python版本的安装使用
hadoop_exporter+prometheus
基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例
Ceph分布式存储-总
Openfiler存储搭建
Proxmox VE虚拟化管理平台-相关概念
zabbix监控系统系列
磁盘性能评价指标—IOPS和吞吐量
RAID技术详解
LSI系列芯片Raid卡配置方法、管理手册
热门文章
CentOS7.2下PXE+kickstart自动化安装系统
单调栈问题汇总
常见DP问题汇总
LeetCode买卖股票问题汇总
计算机网络模型综述
POST vs PUT and POST vs GET
HTTP 与 HTTPS 的区别
对称加密与非对称加密
Web网络基础(HTTP, DNS等)
记一次PR提交经历
Copyright © 2011-2022 走看看