两者都需要引入命名空间:using System.Drawing;

一、图片水印

前台Photoshuiyin.aspx代码:

<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="上传" /><br />
<asp:Image ID="Image1" runat="server" />
</div>

后台Photoshuiyin.aspx.cs代码:

protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += Button1_Click;
} void Button1_Click(object sender, EventArgs e)
{
//1、制作画布
System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent); Graphics g = Graphics.FromImage(img);
//水印样式:画什么东西
string a = "http://www.itnba.com";
//字体、大小
Font f = new Font("黑体", );
//颜色
Brush b = new SolidBrush(Color.Red);
//0,0——开始画水印的位置
g.DrawString(a, f, b, , );
//保存路径
string path = "images/" + FileUpload1.FileName;
img.Save(Server.MapPath(path));
//在image控件中展示
Image1.ImageUrl = path; }

效果展示:


二、图片验证码

前台Photoyanzhengma.aspx代码:

<form id="form1" runat="server">
<div>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
密码:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
验证码:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Image ID="Image1" runat="server" ImageUrl="YZM.aspx" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
var aaa = ;
document.getElementById("Image1").onclick = function () {
this.setAttribute("src", "YZM.aspx?id=" + aaa);
aaa++;
};
</script>

链接页面“YZM.aspx”——无需前台代码,后台代码是:

protected void Page_Load(object sender, EventArgs e)
{
Random r = new Random();
string aaa = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
//生成画布
Bitmap img = new Bitmap(, );
//画布背景色泛性组合
List<Color> Clist = new List<Color>();
Clist.Add(Color.Yellow);
Clist.Add(Color.Green);
Clist.Add(Color.Blue);
Clist.Add(Color.Aqua);
Clist.Add(Color.Orange);
Clist.Add(Color.Pink); Graphics g = Graphics.FromImage(img); g.FillRectangle(new SolidBrush(Clist[r.Next(, Clist.Count)]), , , , );
//随机生成显示的验证码组合
string str = "";
for (int i = ; i < ; i++)
{
str += aaa.Substring(r.Next(, aaa.Length), );
} Session["YZM"] = str;
Font f = new Font("黑体", );
Brush b = new SolidBrush(Color.Red);
//生成
g.DrawString(str, f, b, , );
//添加干扰线
for (int i = ; i < r.Next(, ); i++)
{
Brush bb = new SolidBrush(Clist[r.Next(, Clist.Count)]);
Pen p = new Pen(bb, );
g.DrawLine(p, r.Next(, ), r.Next(, ), r.Next(, ), r.Next(, ));
}
//保存完成
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.End();
}

效果展示:

最新文章

  1. 转:fatal error: SDL/SDL.h: No such file or directory
  2. 【JSP&amp;Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器
  3. 如何仿写thinkphp的C方法?
  4. Oracle Pl/SQL编程基础
  5. CC++初学者编程教程(14) Redhat linux安装Oracle12c
  6. mysql cp复制和mysqldump备份测试
  7. 006-CSS引入外部字体
  8. Golang的md5 hash计算
  9. mybatis多数据源报错
  10. Luogu2792 JSOI2008 小店购物 最小树形图
  11. HDU 1005 Number Sequence(数论)
  12. TensorFlow随机值函数:tf.random_uniform
  13. 【Web前端】清除css、javascript及背景图在浏览器中的缓存
  14. SPOJ7001(SummerTrainingDay04-N 莫比乌斯反演)
  15. STL 笔记(四) 迭代器 iterator
  16. arcgis JavaScript 加载 mapbox地图
  17. JS传递函数并且调用
  18. PHP(四)表单的基本处理
  19. 前端canvas合并图片两种实现方式
  20. Struts2.0 xml文件的配置(package,namespace,action)

热门文章

  1. Spring Boot -- Start Up
  2. ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
  3. 基于Hexo和Github搭建博客
  4. 【Win10 应用开发】实现数据的增量加载
  5. 在Windows上安装Elasticsearch 5.0
  6. springmvc环境搭建以及常见问题解决
  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密
  8. Ajax 提交KindEditor的数据
  9. AngularJS 脏检查深入分析
  10. Memcache缓存系统构建一