就是那种字母数字印在图片上的那种?

解决方案 »

  1.   

    http://www.cnblogs.com/liudao/archive/2007/04/29/732065.html
    http://hi.baidu.com/skyjoy2006/blog/item/ea39ca54ecb16b5bd009067a.html
    http://dev.csdn.net/article/73/73816.shtm自己Google下
    这东西太多了
      

  2.   

     private string GetCode(int num) 
        { 
            string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "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 code = ""; 
            Random rd = new Random(); 
            for (int i = 0; i < num; i++) 
            { 
                code += source[rd.Next(0, source.Length)]; 
            } 
            return code; 
        } 
        private MemoryStream GetVImageStream() 
        { 
            MemoryStream ImageMemoryStream = new MemoryStream(); 
            string VCodeString = GetCode(4); 
            Session["HCValidateCode"] = VCodeString; 
            Font VCodeFont = new Font("Arial", 14, FontStyle.Bold); 
            SolidBrush VCodeBrush = new SolidBrush(Color.SandyBrown); 
            Pen LinePen = new Pen(Color.Ivory, 1); 
            Bitmap Tmap = new Bitmap(VCodeString.Length * 19, 24); 
            Graphics TGrphics; 
            TGrphics = Graphics.FromImage(Tmap); 
            TGrphics.Clear(BackGroundColor(0, 255)); 
            //产生干扰线 
            for (int i = 1; i <= 6; i++) 
            { 
                int TmpPosition = i * 4; 
                Color LineColor = BackGroundColor(0, 255); 
                LinePen.Color = LineColor; 
                TGrphics.DrawLine(LinePen, 0, TmpPosition, VCodeString.Length * 19, 0); 
                LineColor = BackGroundColor(0, 255); 
                LinePen.Color = LineColor; 
                TGrphics.DrawLine(LinePen, 0, 24, VCodeString.Length * 19, TmpPosition); 
            } 
            //产生干扰线 
            TGrphics.DrawString(VCodeString, VCodeFont, VCodeBrush, VCodeString.Length, 1); 
            Tmap.Save(ImageMemoryStream, System.Drawing.Imaging.ImageFormat.Png); 
            Tmap.Dispose(); 
            TGrphics.Dispose(); 
            return ImageMemoryStream; 
        }   #region 随机返回背景色 
      /// <summary> 
      /// 随机返回颜色 
      /// </summary> 
      /// <param name="BeginRandomNumber">指定颜色开始的最小值 </param> 
      /// <param name="RandomNumber">指定颜色值波动的范围 </param> 
      /// <returns>随机的Color </returns> 
      private Color BackGroundColor( int BeginRandomNumber , int RandomNumber ) 
      { 
      int ColorR = 0 ; 
      int ColorG = 0 ; 
      int ColorB = 0 ; 
      Random TRandom = new Random() ; 
      ColorR = BeginRandomNumber + TRandom.Next( RandomNumber ) ; 
      ColorG = BeginRandomNumber + TRandom.Next( RandomNumber ) ; 
      ColorB = BeginRandomNumber + TRandom.Next( RandomNumber ) ; 
      Color ColorBG = Color.FromArgb( ColorR , ColorG , ColorB ) ; 
      return ColorBG ; 
      } 
      #endregion 
            Response.ClearContent(); 
            Response.ContentType = "images/Png"; 
            Response.BinaryWrite(GetVImageStream().ToArray()); 
      

  3.   

    http://blog.csdn.net/linzonghua234/archive/2008/02/28/2128595.aspx
      

  4.   

    /// <summary>
    /// 该方法是将生成的随机数写入图像文件
    /// </summary>
    /// <param name="VNum">VNum是一个随机数</param>
    private void ValidateCode(string VNum) 
    {
    Bitmap Img=null;
    Graphics g=null;
    MemoryStream ms=null; int gheight=VNum.Length*12;//定义图像的大小
    Img=new Bitmap(gheight,25);//生成图像的实例
    g=Graphics.FromImage(Img);//从Img对象生成新的Graphics对象
    Font f=new Font("Arial Black",10);//生成Font类的实例
    SolidBrush s=new SolidBrush(Color.White);//生成笔刷类的实例
    g.DrawString(VNum,f,s,3,3);//将VNum写入图片中
    ms=new MemoryStream();//生成内存流对象
    Img.Save(ms,ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中
    Response.ClearContent();//更改http ContentType
    Response.ContentType="image/Jpeg";
    Response.BinaryWrite(ms.ToArray());//将整个二进制流的内容写入字节数组
    //回收资源
    g.Dispose();
    Img.Dispose();
    Response.End(); }
    /// <summary>
    /// 该方法用于生成指定位数的随机数
    /// </summary>
    /// <param name="VcodeNum">参数是随机数的位数</param>
    /// <returns>返回一个随机数字符串</returns>
    private string RndNum(int VcodeNum)
    {
    string Vchar="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,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[] VcArray=Vchar.Split(new Char [] {','});//拆分成数组
    string VNum="";
    int temp=-1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand=new Random();
    //采用一个简单的算法以保证生成随机数的不同
    for(int i=1;i<VcodeNum+1;i++)
    {
    if(temp!=-1)
    {
    rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
    }

    int t=rand.Next(61);
    if(temp!=-1&&temp==t)
    {
    return RndNum(VcodeNum); }
    temp=t;
    VNum+=VcArray[t];
    }
    return VNum;
    }
      

  5.   

    代码太多了,楼主只要在google里面输入,asp.net 验证码,结果一大堆http://www.jb51.net/article/9492.htm
    ..........
      

  6.   

    http://www.cnblogs.com/82767136/articles/1384664.html
    http://www.cnblogs.com/HappyQQ/archive/2008/04/16/1155945.html
    搜索下很多