Example #1
0
        public Task AddPersonFace(PersonModel person, PersonGroupModel group, FaceImageModel face, UIImage photo, string userData = null)
        {
            try
            {
                var tcs      = new TaskCompletionSource <bool>();
                var faceRect = face.FaceRectangle.ToMPOFaceRect();

                using (var jpgData = photo.AsJPEG(.8f))
                {
                    Client.AddPersonFaceWithPersonGroupId(group.Id, person.Id, jpgData, userData, faceRect, (result, error) =>
                    {
                        tcs.FailTaskIfErrored(error.ToException());
                        tcs.FailTaskByCondition(string.IsNullOrEmpty(result.PersistedFaceId), "AddPersistedFaceResult returned invalid face Id");

                        face.Id = result.PersistedFaceId;

                        person.Faces.Add(face);

                        tcs.SetResult(true);
                    }).Resume();
                }

                return(tcs.Task);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
                throw;
            }
        }
Example #2
0
        public Task <PersonModel> CreatePerson(string personName, PersonGroupModel group, string userData = null)
        {
            try
            {
                var tcs = new TaskCompletionSource <PersonModel>();

                Client.CreatePersonWithPersonGroupId(group.Id, personName, userData, (result, error) =>
                {
                    tcs.FailTaskIfErrored(error.ToException());
                    tcs.FailTaskByCondition(string.IsNullOrEmpty(result.PersonId), "CreatePersonResult returned invalid person Id");

                    var person = new PersonModel
                    {
                        Name     = personName,
                        Id       = result.PersonId,
                        UserData = userData
                    };

                    group.People.Add(person);

                    tcs.SetResult(person);
                }).Resume();

                return(tcs.Task);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
                throw;
            }
        }
Example #3
0
        public Task AddFaceForPerson(Person person, PersonGroup group, Face face, UIImage photo, string userData = null, float quality = .8f)
        {
            var tcs = new TaskCompletionSource <bool> ();

            try
            {
                var faceRect = face.FaceRectangle.ToMPOFaceRect();

                using (var jpgData = photo.AsJPEG(quality))
                {
                    Client.AddPersonFaceWithPersonGroupId(group.Id, person.Id, jpgData, userData, faceRect, (result, error) =>
                    {
                        tcs.FailTaskIfErrored(error.ToException());
                        tcs.FailTaskByCondition(string.IsNullOrEmpty(result?.PersistedFaceId), "AddPersistedFaceResult returned invalid face Id");
                        if (tcs.IsNullFinishCanceledOrFaulted())
                        {
                            return;
                        }

                        face.Id = result.PersistedFaceId;
                        face.UpdatePhotoPath();

                        person.Faces.Add(face);

                        face.SavePhotoFromSource(photo);

                        tcs.SetResult(true);
                    }).Resume();
                }

                return(tcs.Task);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }