c# .net 生成图片验证码的代码

说明:
 .net 万岁...
 .net framework 的类库真是太强了, 用 GDI+ 可以干N多N多事情.
  广告时间:
 shawl.qiu C# CMS 系统 预计40天后开始编码, 现在逐步设计中, 免得到时求职说什么什么作品...唉.
 PS: 今天求职真是惨不忍睹, 谁要招网页相关的请联系 13435580019, 邱先生. 
 什么地方俺都去, 工资只要能过活就行,  但是食宿问题得解决.
 shawl.qiu
 2007-02-01
 http://blog.csdn.net/btbtd
 class checkcode:


代码如下:

<%@ Page Language="C#" AutoEventWireup="True" %>  
<%@ import Namespace="System.Drawing"%>  
<%@ import Namespace="System.Drawing.Drawing2D"%>  
<%@ import Namespace="System.Web"%>  
<script runat="server">  
 private void Page_Load(object sender, System.EventArgs e)  
 {  
  String sRndStr=checkcode.rndStr(4);  
  checkcode.general(sRndStr);  
 }   
/*-----------------------------------------------------------------------------------*\  
 * shawl.qiu c# .net checkcode class v1.0  
\*-----------------------------------------------------------------------------------*/  
//---------------------------------------------------------------------begin class checkcode  
public class checkcode  
{  
 //-----------------------------------begin event  
 public checkcode()  
 {  
 }  
 ~checkcode()  
 {  
 }  
 //-----------------------------------end event  
 //-----------------------------------begin public constant  
 //-----------------------begin about  
 public const String auSubject="shawl.qiu c# .net checkcode class";  
 public const String auVersion="v1.0";  
 public const String au="shawl.qiu";  
 public const String auEmail="shawl.qiu@gmail.com";  
 public const String auBlog="http://blog.csdn.net/btbtd";  
 public const String auCreateDate="2007-2-1";  
 //-----------------------end about  
 //-----------------------------------end public constant  
 //-----------------------------------begin public static method  
 public static void general(String sCc)  
 {  
  Int32 ccLen=sCc.Length;  
  String ccFtFm="Arial";  
  Int32 ccFtSz=12;  
  Int32 ccWidth=ccLen*ccFtSz+1;  
  Int32 ccHeight=ccFtSz+5;  
  using(Bitmap oImg = new Bitmap(ccWidth, ccHeight))  
  {  
   using(Graphics oGpc=Graphics.FromImage(oImg))  
   {  
    HatchBrush hBrush = new HatchBrush(HatchStyle.DashedVertical,  
      Color.Yellow, Color.Silver);   
    oGpc.FillRectangle(hBrush, 0, 0, ccWidth, ccWidth);  
    oGpc.DrawString(sCc,new System.Drawing.Font(ccFtFm,ccFtSz, FontStyle.Bold),  
     new System.Drawing.SolidBrush(Color.Black),0,0);   
    //-----------------------边框  
    Pen blackPen = new Pen(Color.Black, 1);  
    oGpc.DrawLine(blackPen, 0, ccHeight, 0, 0); // 左竖线  
    oGpc.DrawLine(blackPen, 0,0,ccWidth,0); // 顶横线  
    oGpc.DrawLine(blackPen, ccWidth-1,0,ccWidth-1,20); // 右竖线  
    oGpc.DrawLine(blackPen, 0, ccHeight-1, ccWidth, ccHeight-1); // 底横线  
    writeImg(oImg);  
   }  
  }  
 } // end public static void general  
 public static String rndStr(Int32 len)  
 {  
  String sTemp="";  
  String sForRnd="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";  
  String[] aRnd=sForRnd.Split(',');  
  Random oRnd=new Random();  
  Int32 iArLen=aRnd.Length;  
  for(Int32 i=0; i<len; i++)  
  {  
   sTemp+=aRnd[oRnd.Next(0,iArLen)];  
  }  
  return sTemp;  
 } // end public static String rndStr  
 //-----------------------------------end public static method  
 //-----------------------------------begin private static method  
 private static void writeImg(Bitmap oImg)  
 {  
  using(System.IO.MemoryStream ms=new System.IO.MemoryStream())  
  {  
   oImg.Save(ms,System.Drawing.Imaging.ImageFormat.Png);   
   HttpContext.Current.Response.ClearContent();    
   HttpContext.Current.Response.ContentType="image/Png";  
   HttpContext.Current.Response.BinaryWrite(ms.ToArray());  
  }  
 } // end private static void writeImg  
}  
//---------------------------------------------------------------------end class checkcode  
</script>

(0)

相关推荐

  • c# Base64编码和图片的互相转换代码

    事出有因 我们已经做了一个编辑器,这个编辑器可以以xml格式存储一些信息.在存储图片信息时我们碰到了一些问题.我们本来在xml信息中存储的是图片的路径,然而一旦客户把这个信息copy到其他电脑上而没有同时copy相关的图片时,就会出现一些问题.          后来,我们把图片数据转换为Base64编码,替代了原先存储图片路径的方式. 转换流程 将图片转化为Base64字符串的流程是:首先使用BinaryFormatter将图片文件序列化为二进制数据,然后使用Convert类的ToBase64

  • c#给图片添加文字的代码小结

    代码实例一 复制代码 代码如下: using System; using System.IO; using System.Collections; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Imag_writer { /// <summary> /// 水印的类型 /// </summary> public enum WaterMarkT

  • c#图片缩放图片剪切功能实现(等比缩放)

    所谓c#图片处理高级应,多数是基于.net framework类库完成 复制代码 代码如下: using system;using system.collections.generic;using system.text;using system.io;using system.drawing;using system.drawing.drawing2d;using system.drawing.imaging; namespace wujian.common{    /// <summary>

  • C#识别出图片里的数字和字母

    一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现的字母和数字基本就那几个,所以识别库的范围设定的比较少. 原理和算法在代码中做了详细说明,功能存在很大的局限性,但我的想法是把这个思路和实现的办法共享出来. 源码下载地址: http://git.oschina.net/bobo2cj/iamge2text /* * 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比 * * 获取字库:通过下面

  • silverlight实现图片局部放大效果的方法

    本文实例讲述了silverlight实现图片局部放大效果的方法.分享给大家供大家参考,具体如下: 很多购物平台中(比如京东购物),浏览产品详情时都有这种效果,前几天看到有朋友问SL能不能实现,当然可以 界面: 1.左侧小图片(用一个矩形Fill一张图片即可) 2.左侧半透明矩形 3.右侧大图片(用一个Canvas设置Clip裁剪可视区域作为蒙板,图片放置在Canvas中即可) 原理: 获取左侧半透明矩形的相对位置,然后动态调整右侧大图的Canvas.Left与Canvas.Top 需要知道以下技

  • C#图片按比例缩放的实现代码

    复制代码 代码如下: using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging; namespace Publics{    public class ImgHelper    {        public static void AdjustPhoto(int toWidth, int toHeight, string filePath, string fromFileName, stri

  • C#保存图片到数据库并读取显示图片的方法

    复制代码 代码如下: private void button2_Click_1(object sender, System.EventArgs e) { string pathName; if (this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK) { pathName = this.openFileDialog1.FileName; System.Drawing.Image img = System.D

  • C# 将字节流转换为图片的实例方法

    复制代码 代码如下: usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Drawing; usingSystem.IO; namespaceMicrosoft.Form.Base {     classImageToByte     {         /// <summary>         /// 图片转换成字节流         /// </s

  • C#图片压缩的实现方法

    一般在web应用中,对客户端提交上来的图片肯定需要进行压缩的.尤其是比较大的图片,如果不经过压缩会导致页面变的很大,打开速度比较慢,当然了如果是需要高质量的图片也得需要生产缩略图. 下面贴出我自己琢磨的图片压缩算法,首先这个是未经优化的简单实现: 复制代码 代码如下: public static System.Drawing.Image GetImageThumb(System.Drawing.Image sourceImg, int width, int height)        {   

  • C#(.net)水印图片的生成完整实例

    本文以一个完整实例讲述了C#水印图片的生成方法.是非常实用的技巧.分享给大家供大家参考. 具体实例代码如下: /* * * 使用说明: * 建议先定义一个WaterImage实例 * 然后利用实例的属性,去匹配需要进行操作的参数 * 然后定义一个WaterImageManage实例 * 利用WaterImageManage实例进行DrawImage(),印图片水印 * DrawWords()印文字水印 * */ using System; using System.Drawing; using

  • Silverlight将图片转换为byte的实现代码

    最近总是有人问如何通过Silverlight上传图片并保存的后台服务器?众所周知,Silverlight是客户端程序,不能很好与服务器进行"沟通",上传图片的方法呢大致都是通过以下流程: 1.客户端获取图片-->2.转换能够传输的数据-->3.传递数据到服务端-->4.服务端还原数据为图片 第一步和第四步没有问题,问题大多出在第二步和第三步,如何得到客户端和服务端都能识别并且容易传递的数据呢? 如果你使用的客户端和服务端都是.NET方案,这就非常好办,可以通过下面的方

  • Silverlightbutton图片切换样式实例代码

    之前一直做WPF现在开始接触Slilverlight感触很多. 今天做一个Button要求 有两个图片,button默认有一个图片,鼠标over时用另一个图片, 用wpf做的时候写一个template很简单,但silverlight和wpf写起来不一样 记录一下.大概思路是两个image鼠标MouseOver的时候一个Visible一个Collapsed 写的是一个自定义控件,代码和皮肤分离,很简单的一个demo 代码下载:ImageButtonTest.rar 先写一个继承自button的im

  • C#实现图片分割方法与代码

    1. 概述 有时候我们需要在web页面上显示一张图,比如说一张地图,而这张地图会比较大.这时候如果我们把一张大图分隔成一组小图,那么客户端的显示速度会明显地感觉块.希望阅读本文对你有所帮助. 2. 实现思路 .NET Framework GDI+ 为我们提供了一组丰富地类来编辑图形图像.有关.NET Framework GDI+的详细资料请查阅msdn相关文档.这里只简要叙述本程序要用的的几个类. System.Drawing.Image.LoadFile 方法可以从指定的文件创建 Image 

随机推荐