public FileResult Captcha() { string num = Core.RandomTo.NumCode(4); byte[] bytes = ImageTo.Captcha(num); HttpContext.Session.SetString("captcha", Core.CalcTo.MD5(num.ToLower())); return(File(bytes, "image/jpeg")); }
/// <summary> /// 注册验证码 /// </summary> /// <returns></returns> public FileResult RegisterCode() { //生成验证码 string num = RandomTo.NumCode(4); HttpContext.Session.SetString("RegisterCode", num); byte[] bytes = ImageTo.CreateImg(num); return(File(bytes, "image/jpeg")); }
public static string QrImg(string content, string qrcodeImgPath, int wh, string centerImgPath, string color, string bgcolor) { BitMatrix matrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, wh, wh, null); Image image = Create.toBitmap(matrix, color, bgcolor); if (centerImgPath != null && File.Exists(centerImgPath)) { Image image2 = Image.FromFile(centerImgPath); Graphics graphics = Graphics.FromImage(image); int width = (image2.Width > image.Width / 3) ? (image.Width / 3) : image2.Width; int height = (image2.Height > image.Height / 3) ? (image.Height / 3) : image2.Height; image2 = ImageTo.Zoom(image2, width, height, false); graphics.DrawImage(image2, new Rectangle((image.Width - image2.Width) / 2, (image.Height - image2.Height) / 2, image2.Width, image2.Height), 0, 0, image2.Width, image2.Height, GraphicsUnit.Pixel); graphics.Dispose(); } image.Save(qrcodeImgPath, ImageFormat.Png); image.Dispose(); return(qrcodeImgPath); }
public ActionResultVM UpdateUserPhoto(string type, string source) { var vm = new ActionResultVM(); var uinfo = new UserAuthAid(HttpContext).Get(); try { var rootdir = GlobalTo.WebRootPath + "/" + (GlobalTo.GetValue("StaticResource:RootDir").TrimStart('/').TrimEnd('/') + "/"); var path = GlobalTo.GetValue("StaticResource:AvatarPath").TrimEnd('/').TrimStart('/') + '/'; var fullpath = rootdir + path; if (!Directory.Exists(fullpath)) { Directory.CreateDirectory(fullpath); } if (string.IsNullOrWhiteSpace(uinfo.UserPhoto)) { uinfo.UserPhoto = UniqueTo.LongId() + ".jpg"; } var upname = uinfo.UserPhoto.Split('?')[0]; var npnew = upname + "?" + DateTime.Now.ToTimestamp(); switch (type) { case "file": { source = source.Substring(source.LastIndexOf(",") + 1); byte[] bytes = Convert.FromBase64String(source); using var ms = new MemoryStream(bytes); using var bmp = new System.Drawing.Bitmap(ms); var hp = fullpath + upname.Replace(".", "_lg."); bmp.Save(hp, ImageFormat.Jpeg); ImageTo.MinImg(hp, fullpath, upname, 40, 40, "wh"); using (var db = new ContextBase()) { var usermo = db.UserInfo.Find(uinfo.UserId); usermo.UserPhoto = npnew; db.UserInfo.Update(usermo); int num = db.SaveChanges(); if (num > 0) { using var ac = new AccountController(); ac.SetAuth(HttpContext, usermo); } } vm.Set(ARTag.success); } break; case "link": { using var wc = new System.Net.WebClient(); var hp = fullpath + upname.Replace(".", "_lg."); wc.DownloadFile(source, hp); ImageTo.MinImg(hp, fullpath, upname, 40, 40, "wh"); using (var db = new ContextBase()) { var usermo = db.UserInfo.Find(uinfo.UserId); usermo.UserPhoto = npnew; db.UserInfo.Update(usermo); int num = db.SaveChanges(); if (num > 0) { using var ac = new AccountController(); ac.SetAuth(HttpContext, usermo); } } vm.Set(ARTag.success); } break; } } catch (Exception ex) { vm.Set(ex); } return(vm); }
private void MatchButtonClick(object sender, EventArgs e) { List <Minutia> minutiasFrom = GetMinutiasFrom(ImageFrom); MessageBox.Show("Found " + minutiasFrom.Count + " minutias in left picture."); List <Classes.Point> pointsFrom = new List <Classes.Point>(); Graphics ImageFromGraphics = ImageFrom.CreateGraphics(); foreach (Minutia m in minutiasFrom) { Classes.Point p = new Classes.Point(m.X, ImageFrom.Height - m.Y + 1); p.Paint(ImageFromGraphics, defPointPen, ImageFrom.Height); pointsFrom.Add(p); } if (minutiasFrom.Count > 500) { string messageBoxText = "Do you really want to continue?\n You'll just waste your time..."; string caption = "Too many minutuias"; MessageBoxButtons mb = MessageBoxButtons.OKCancel; if (MessageBox.Show(messageBoxText, caption, mb) == System.Windows.Forms.DialogResult.Cancel) { return; } } Classes.TriangulationBuilder tb = new Classes.TriangulationBuilder(pointsFrom); MessageBox.Show("Triangulation built! It has: " + tb.triangles.Count + " triangles."); List <Classes.Triangle> triangulationFrom = tb.triangles; foreach (Classes.Triangle t in tb.triangles) { t.Paint(ImageFromGraphics, defLinePen, defPointPen, ImageFrom.Height); } List <Minutia> minutiasTo = GetMinutiasFrom(ImageTo); MessageBox.Show("Found " + minutiasTo.Count + " minutias in right picture"); List <Classes.Point> pointsTo = new List <Classes.Point>(); Graphics ImageToGraphics = ImageTo.CreateGraphics(); foreach (Minutia m in minutiasTo) { Classes.Point p = new Classes.Point(m.X, ImageTo.Height - m.Y + 1); p.Paint(ImageToGraphics, defPointPen, ImageTo.Height); pointsTo.Add(p); } if (minutiasTo.Count > 500) { string messageBoxText = "Do you really want to continue?\n You'll just waste your time..."; string caption = "Too many minutuias"; MessageBoxButtons mb = MessageBoxButtons.OKCancel; if (MessageBox.Show(messageBoxText, caption, mb) == System.Windows.Forms.DialogResult.Cancel) { return; } } Classes.TriangulationBuilder tbTo; if (minutiasTo.Count < 500) { tbTo = new Classes.TriangulationBuilder(pointsTo); } else { tbTo = new Classes.TriangulationBuilder(pointsTo, ImageToGraphics, defLinePen, defPointPen, new Pen(Color.Gold, 1), ImageTo.Height, 0); } MessageBox.Show("Triangulation built! It has: " + tbTo.triangles.Count + " triangles."); List <Classes.Triangle> triangulationTo = tbTo.triangles; foreach (Classes.Triangle t in tbTo.triangles) { t.Paint(ImageToGraphics, defLinePen, defPointPen, ImageFrom.Height); } Classes.TriangulationsMatcher tm = new Classes.TriangulationsMatcher(triangulationFrom, triangulationTo); double[] result = tm.Match(0.001, 90); MessageBox.Show("Equals: " + result[0] + ", very close:" + result[1]); }
public static string ImageUrl(this UrlHelper uh, ImageTo it, int aid, int bid) { return uh.RouteUrl("Image", new { action = it.ToString(), aid = aid, bid = bid }); }