public static byte[] CreateImage(string randomcode) { int maxValue = 30; Bitmap bitmap = new Bitmap(randomcode.Length * 30, 32); Graphics graphics = Graphics.FromImage((Image)bitmap); graphics.SmoothingMode = SmoothingMode.HighQuality; byte[] numArray; try { graphics.Clear(Color.Transparent); int index1 = CheckCode.rand.Next(2); Brush brush = (Brush) new SolidBrush(CheckCode.c[index1]); for (int index2 = 0; index2 < 1; ++index2) { int num1 = CheckCode.rand.Next(bitmap.Width / 2); int num2 = CheckCode.rand.Next(bitmap.Width * 3 / 4, bitmap.Width); int num3 = CheckCode.rand.Next(bitmap.Height); int num4 = CheckCode.rand.Next(bitmap.Height); graphics.DrawBezier(new Pen(CheckCode.c[index1], 2f), (float)num1, (float)num3, (float)((num1 + num2) / 4), 0.0f, (float)((num1 + num2) * 3 / 4), (float)bitmap.Height, (float)num2, (float)num4); } char[] chArray = randomcode.ToCharArray(); StringFormat format = new StringFormat(StringFormatFlags.NoClip); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; for (int index2 = 0; index2 < chArray.Length; ++index2) { int index3 = CheckCode.rand.Next(5); Font font = new Font(CheckCode.font[index3], 22f, FontStyle.Bold); Point point = new Point(16, 16); float angle = (float)ThreadSafeRandom.NextStatic(-maxValue, maxValue); graphics.TranslateTransform((float)point.X, (float)point.Y); graphics.RotateTransform(angle); graphics.DrawString(chArray[index2].ToString(), font, brush, 1f, 1f, format); graphics.RotateTransform(-angle); graphics.TranslateTransform(2f, -(float)point.Y); } MemoryStream memoryStream = new MemoryStream(); bitmap.Save((Stream)memoryStream, ImageFormat.Png); numArray = memoryStream.ToArray(); } finally { graphics.Dispose(); bitmap.Dispose(); } return(numArray); }
public static byte[] CreateImage(string randomcode) { int num = 30; int width = randomcode.Length * 30; Bitmap bitmap = new Bitmap(width, 36); Graphics graphics = Graphics.FromImage(bitmap); byte[] result; try { graphics.Clear(Color.Transparent); int num2 = CheckCode.rand.Next(7); Brush brush = new SolidBrush(CheckCode.c[num2]); for (int i = 0; i < 1; i++) { int num3 = CheckCode.rand.Next(bitmap.Width / 2); int num4 = CheckCode.rand.Next(bitmap.Width * 3 / 4, bitmap.Width); int num5 = CheckCode.rand.Next(bitmap.Height); int num6 = CheckCode.rand.Next(bitmap.Height); graphics.DrawBezier(new Pen(CheckCode.c[num2], 2f), (float)num3, (float)num5, (float)((num3 + num4) / 4), 0f, (float)((num3 + num4) * 3 / 4), (float)bitmap.Height, (float)num4, (float)num6); } char[] array = randomcode.ToCharArray(); StringFormat stringFormat = new StringFormat(StringFormatFlags.NoClip); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; for (int j = 0; j < array.Length; j++) { int num7 = CheckCode.rand.Next(5); Font font = new Font(CheckCode.font[num7], 22f, FontStyle.Bold); Point point = new Point(16, 16); float num8 = (float)ThreadSafeRandom.NextStatic(-num, num); graphics.TranslateTransform((float)point.X, (float)point.Y); graphics.RotateTransform(num8); graphics.DrawString(array[j].ToString(), font, brush, 1f, 1f, stringFormat); graphics.RotateTransform(-num8); graphics.TranslateTransform(2f, (float)(-(float)point.Y)); } MemoryStream memoryStream = new MemoryStream(); bitmap.Save(memoryStream, ImageFormat.Png); result = memoryStream.ToArray(); } finally { graphics.Dispose(); bitmap.Dispose(); } return(result); }
/// <summary> /// 创建随机码图片 /// </summary> /// <param name="randomcode">随机码</param> public static byte[] CreateImage(string randomcode) { int randAngle = 30; //随机转动角度 int mapwidth = (int)(randomcode.Length * 30); Bitmap map = new Bitmap(mapwidth, 36); //创建图片背景 Graphics graph = Graphics.FromImage(map); try { graph.Clear(Color.White);//清除画面,填充背景 int cindex = rand.Next(7); Brush b = new System.Drawing.SolidBrush(c[cindex]); for (int i = 0; i < 1; i++) { int x1 = rand.Next(map.Width / 2); int x2 = rand.Next(map.Width * 3 / 4, map.Width); int y1 = rand.Next(map.Height); int y2 = rand.Next(map.Height); graph.DrawBezier(new Pen(c[cindex], 2), x1, y1, (x1 + x2) / 4, 0, (x1 + x2) * 3 / 4, map.Height, x2, y2); } //验证码旋转,防止机器识别 char[] chars = randomcode.ToCharArray();//拆散字符串成单字符数组 //文字距中 StringFormat format = new StringFormat(StringFormatFlags.NoClip); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; for (int i = 0; i < chars.Length; i++) { int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], 22, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小) Point dot = new Point(16, 16); //graph.DrawString(dot.X.ToString(),fontstyle,new SolidBrush(Color.Black),10,150);//测试X坐标显示间距的 float angle = ThreadSafeRandom.NextStatic(-randAngle, randAngle); //转动的度数 graph.TranslateTransform(dot.X, dot.Y); //移动光标到指定位置 graph.RotateTransform(angle); graph.DrawString(chars[i].ToString(), f, b, 1, 1, format); graph.RotateTransform(-angle); //转回去 graph.TranslateTransform(2, -dot.Y); //移动光标到指定位置 } //生成图片 System.IO.MemoryStream ms = new System.IO.MemoryStream(); map.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); return(ms.ToArray()); } finally { graph.Dispose(); map.Dispose(); } }
public static byte[] CreateVane(string wind, int id) { int randAngle = 0; //随机转动角度 int mapwidth = 0; int f_size = 18; if (id == 0) { mapwidth = 15; f_size = 36; } else { mapwidth = 24; f_size = 18; } Bitmap map = new Bitmap(mapwidth, 35);//创建图片背景 Graphics graph = Graphics.FromImage(map); try { graph.Clear(Color.Transparent);//清除画面,填充背景 int cindex = rand.Next(7); Brush b = new System.Drawing.SolidBrush(c[cindex]); //验证码旋转,防止机器识别 //char[] chars = wind.ToCharArray();//拆散字符串成单字符数组 //文字距中 StringFormat format = new StringFormat(StringFormatFlags.NoClip); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; //for (int i = 0; i < chars.Length; i++) //{ int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], f_size, FontStyle.Bold); //字体样式(参数2为字体大小) Point dot = new Point(16, 16); //graph.DrawString(dot.X.ToString(),fontstyle,new SolidBrush(Color.Black),10,150);//测试X坐标显示间距的 float angle = ThreadSafeRandom.NextStatic(-randAngle, randAngle); //转动的度数 graph.TranslateTransform(dot.X, dot.Y); //移动光标到指定位置 graph.RotateTransform(angle); graph.DrawString(wind.ToString(), f, b, 1, 1, format); graph.RotateTransform(-angle); //转回去 graph.TranslateTransform(2, -dot.Y); //移动光标到指定位置 //} //生成图片 System.IO.MemoryStream ms = new System.IO.MemoryStream(); map.Save(ms, System.Drawing.Imaging.ImageFormat.Png); return(ms.ToArray()); } finally { graph.Dispose(); map.Dispose(); } }