Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        /// <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"));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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 });
 }