Beispiel #1
0
        private void btLoadPicture_Click(object sender, EventArgs e)
        {
            ControlBox = false;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter = "Images|*.jpg;*.bmp;*.png;*.jpeg";
            OpenFileDialog openFileDialog2 = openFileDialog1;

            if (openFileDialog2.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            try
            {
                Bitmap source = new Bitmap(openFileDialog2.FileName);
                pictureEdit1.Image = source;
                Image    image = source.ConvertFrom();
                FaceInfo face  = MainForm.Engine.DetectMaxFace(image, null);
                Cursor      = Cursors.Default;
                _currentKey = null;
                if (face != null)
                {
                    _currentKey = new BcKey
                    {
                        ImageKey = MainForm.Engine.ExtractTemplate(image, face)
                    };
                }
                else
                {
                    int num = (int)XtraMessageBox.Show(Messages.NoFaceWasFound, Messages.Message, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    _currentKey = null;
                }
            }
            catch (Exception ex)
            {
                int num = (int)XtraMessageBox.Show(ex.Message, Messages.Error, MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
        }
Beispiel #2
0
 public void SaveFace(string str, FaceRecognition rec)
 {
     try
     {
         BcFace   bcFace   = new BcFace();
         string[] strArray = str.Replace(_currentDir + "\\", "").ToUpper().Replace(".JPEG", "").Replace(".JPG", "").Replace(".BMP", "").Replace(".GIF", "").Replace(".PNG", "").Replace(".TIFF", "").Split(new string[1]
         {
             " "
         }, StringSplitOptions.RemoveEmptyEntries);
         bcFace.Id = Guid.Empty;
         if (strArray.Length > 1)
         {
             bcFace.FirstName = strArray[1];
         }
         if (strArray.Length > 0)
         {
             bcFace.Surname = strArray[0];
         }
         if (strArray.Length > 2)
         {
             bcFace.LastName = strArray[2];
         }
         Bitmap source = (Bitmap)Image.FromFile(str);
         TS.Sdk.StaticFace.Model.Image image = source.ConvertFrom();
         BcKey    bcKey = new BcKey();
         FaceInfo face  = rec.Engine.DetectMaxFace(image, null);
         if (face != null)
         {
             bcFace.Comment    = CommonComment;
             bcFace.Sex        = CommonSex;
             bcFace.AccessId   = _selectedCategoryId;
             bcFace.EditUserId = MainForm.CurrentUser.Id;
             Rectangle faceRectangle = face.FaceRectangle;
             int       width1        = (int)faceRectangle.Width * 2;
             faceRectangle = face.FaceRectangle;
             int    height1 = (int)faceRectangle.Height * 2;
             Bitmap bitmap  = new Bitmap(width1, height1);
             using (Graphics graphics = Graphics.FromImage(bitmap))
             {
                 graphics.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);
                 faceRectangle = face.FaceRectangle;
                 double x1 = faceRectangle.X;
                 faceRectangle = face.FaceRectangle;
                 double num1 = faceRectangle.Width / 2.0;
                 int    x2   = (int)(x1 - num1);
                 double num2 = source.Height;
                 faceRectangle = face.FaceRectangle;
                 double y1   = faceRectangle.Y;
                 double num3 = num2 - y1;
                 faceRectangle = face.FaceRectangle;
                 double height2 = faceRectangle.Height;
                 double num4    = num3 - height2;
                 faceRectangle = face.FaceRectangle;
                 double num5    = faceRectangle.Width / 2.0;
                 int    y2      = (int)(num4 - num5);
                 int    width2  = bitmap.Width;
                 int    height3 = bitmap.Height;
                 graphics.DrawImage(source, new System.Drawing.Rectangle(0, 0, width2, height3), new System.Drawing.Rectangle(x2, y2, width2, height3), GraphicsUnit.Pixel);
             }
             MemoryStream memoryStream1 = new MemoryStream();
             MemoryStream memoryStream2 = new MemoryStream();
             bitmap.Save(memoryStream1, ImageFormat.Jpeg);
             BcImage bcImage = new BcImage();
             if (bitmap.Width >= 300)
             {
                 bitmap = new Bitmap(bitmap, new Size(bitmap.Width / 2, bitmap.Height / 2));
                 bitmap.Save(memoryStream2, ImageFormat.Jpeg);
                 bcFace.ImageIcon  = memoryStream2.GetBuffer();
                 bcImage.ImageIcon = memoryStream2.GetBuffer();
             }
             else
             {
                 bcFace.ImageIcon  = memoryStream1.GetBuffer();
                 bcImage.ImageIcon = memoryStream1.GetBuffer();
             }
             bcFace.Save();
             bcImage.FaceId = bcFace.Id;
             bcImage.Image  = memoryStream1.GetBuffer();
             bcImage.FaceId = bcFace.Id;
             bcImage.Save();
             bitmap.Dispose();
             memoryStream1.Close();
             memoryStream1.Dispose();
             memoryStream2.Close();
             memoryStream2.Dispose();
             bcKey.ImageKey = rec.Engine.ExtractTemplate(image, face);
             if (bcKey.ImageKey != null)
             {
                 bcKey.Ksid    = -1;
                 bcKey.ImageId = bcImage.Id;
                 bcKey.FaceId  = bcFace.Id;
                 bcKey.Save();
             }
             else
             {
                 Errors.Add("Error to create template");
                 ErrorFiles.Add(str);
             }
         }
         else
         {
             Errors.Add(Messages.NoFaceWasFound);
             ErrorFiles.Add(str);
         }
         source.Dispose();
     }
     catch (Exception ex)
     {
         Errors.Add(ex.Message);
         ErrorFiles.Add(str);
     }
     rec.IsWork = false;
     try
     {
         Invoke(new NewValueFileFunc(NewValueFile), (object)_progVal, (object)_mainIndex, (object)_commonFiles.Count);
     }
     catch
     {
     }
 }