/// <summary> /// 显示验证码 /// </summary> /// <param name="key"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> private Result ShowCode(string key, int width, int height) { string random = WebAgent.GetRandom(0, 9999).ToString().PadLeft(4, '0'); MemoryUtils.Set(key, random, TimeSpan.FromMinutes(5)); using (Bitmap bitmap = new Bitmap(width, height)) { Bitmap bg = (Bitmap) new ResourceManager(typeof(Resources)).GetObject("validcode_bg"); Rectangle rectangle = new Rectangle(WebAgent.GetRandom(0, bg.Width - width), WebAgent.GetRandom(0, bg.Height - height), width, height); using (Graphics g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); g.DrawImage(bg, new Rectangle(0, 0, width, height), rectangle, GraphicsUnit.Pixel); for (int i = 0; i < random.Length; i++) { Bitmap code = (Bitmap) new ResourceManager(typeof(Resources)).GetObject($"validcode_{random[i]}"); Rectangle codeRectangle = new Rectangle(width / random.Length * i + WebAgent.GetRandom(-5, 5), WebAgent.GetRandom(-5, 5), width / 4, height); g.DrawImage(code, codeRectangle, new Rectangle(0, 0, code.Width, code.Height), GraphicsUnit.Pixel); } } using (MemoryStream ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Png); return(new Result(ContentType.PNG, ms.ToArray())); } } }
static TranslateUtils() { APIURL = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build()["studio:language"]; if (string.IsNullOrEmpty(APIURL)) { return; } Console.WriteLine("触发翻译器静态构造"); Timer timer = new Timer(60 * 1000) { Enabled = true }; timer.Elapsed += (sender, e) => { if (UPDATETIME != GetDataTime()) { Console.WriteLine("语言包存在更新"); MemoryUtils.Set(KEY, GetAPIData(), TimeSpan.FromDays(7)); } }; timer.Start(); }