文字生成图片

#region 生成汉字随机数 /// <summary>
       
/// 生成汉字随机数
       
/// </summary>
       
/// <param name="rd">随机数对象</param>
       
/// <param name="intLength">随机数的个数</param>
       
/// <returns></returns>
        public static string setRegionCodeRand(Random rd, int intLength)
        {
           
string strRegCodeRand = "";
            Encoding encGB
= Encoding.GetEncoding("gb2312");
           
string[] strBase = new string[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
           
object[] objBytes = new object[intLength];
           
for (int i = 0; i < intLength; i++)
            {
               
int rnd1 = rd.Next(11, 14);
               
string str_rnd1 = strBase[rnd1].Trim();
                rd
= new Random(rnd1 * unchecked((int)DateTime.Now.Ticks) + i);
               
int rnd2;
               
if (rnd1 == 13)
                {
                    rnd2
= rd.Next(0, 7);
                }
               
else
                {
                    rnd2
= rd.Next(0, 16);
                }
               
string str_rnd2 = strBase[rnd2].Trim();
                rd
= new Random(rnd2 * unchecked((int)DateTime.Now.Ticks) + i);
               
int rnd3 = rd.Next(10, 16);
               
string str_rnd3 = strBase[rnd3].Trim();
                rd
= new Random(rnd3 * unchecked((int)DateTime.Now.Ticks) + i);
               
int rnd4;
               
if (rnd3 == 10)
                {
                    rnd4
= rd.Next(1, 16);
                }
               
else if (rnd3 == 15)
                {
                    rnd4
= rd.Next(0, 15);
                }
               
else
                {
                    rnd4
= rd.Next(0, 16);
                }
               
string str_rnd4 = strBase[rnd4].Trim();
               
byte byRand1 = Convert.ToByte(str_rnd1 + str_rnd2, 16);
               
byte byRand2 = Convert.ToByte(str_rnd3 + str_rnd4, 16);
               
byte[] byRands = new byte[] { byRand1, byRand2 };
                objBytes.SetValue(byRands, i);
            }
           
string[] strRegCode = new string[intLength];
           
for (int j = 0; j < intLength; j++)
            {
                strRegCode[j]
= encGB.GetString((byte[])Convert.ChangeType(objBytes[j], typeof(byte[])));
                strRegCodeRand
+= strRegCode[j].Trim();
            }
           
return strRegCodeRand;
        }
       
#endregion

public static void strRandMap(string saveImagePath)
        {
           
//建立位图对象
            Bitmap bitmap = new Bitmap(90, 30, PixelFormat.Format48bppRgb);
           
//根据上面创建的位图对象创建绘图面
            Graphics graphics = Graphics.FromImage(bitmap);
           
//以指定的颜色填充矩形区
            graphics.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, 0, 90, 30));
           
//创建字体对象
            Font txtFont = new Font("gb2312", 12, FontStyle.Bold);
           
//创建RectangleF结构指定一个区域
            RectangleF rectangleF = new RectangleF(0, 0, 90, 30);
           
//创建随机数对象
            Random random = new Random();
           
//获取随机数
            string strRand = setRegionCodeRand(random, 6);
           
//string strRand = setRegionCodeRand(random, 4);
           
//使用指定的颜色填充上面RectangleF结构指定的矩形区域
            graphics.FillRectangle(new SolidBrush(Color.BurlyWood), rectangleF);
            StringFormat sformat
= new StringFormat();
            sformat.Alignment
= StringAlignment.Center;
            sformat.LineAlignment
= StringAlignment.Center;
           
//在上面填充的矩形区域中填充上面生成的随机数
            graphics.DrawString(strRand, txtFont, new SolidBrush(Color.Blue), rectangleF, sformat);

           
//把创建的位图保存到指定的路径
            bitmap.Save(HttpContext.Current.Server.MapPath("") + saveImagePath, ImageFormat.Gif);
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值