async private void btnTakePhoto_Clicked(object sender, EventArgs e) { try { // Init await CrossMedia.Current.Initialize(); // Check Is-Camera-Available and Is-Take-Photo-Support? if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await DisplayAlert("No Camera", ":( No camera available.", "OK"); return; } // get file from TakePhotoAsync with Plugin.Media.Abstractions.StoreCameraMediaOptions{ Directory & Name } var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions { Directory = "Sample", Name = "test.jpg", PhotoSize = PhotoSize.Medium, DefaultCamera = CameraDevice.Front }); // Check if file is null if (file == null) { return; } // Show file.Path in DisplayAlert await DisplayAlert("File Location", file.Path, "OK"); // Use ImageSource.FromStream to show file in image.Source var streamPic = ImageSource.FromStream(() => { var stream = file.GetStream(); //file.Dispose(); return(stream); }); //Convert Byte /* * byte[] buffer = new byte[(1024 * 1024)*10]; * using (MemoryStream ms = new MemoryStream()) * { * int read; * while ((read = file.GetStream().Read(buffer, 0, buffer.Length)) > 0) * { * ms.Write(buffer, 0, read); * } * imgByte= ms.ToArray(); * } */ //await using (var stream = file.GetStream()) { var client = new FaceServiceClient(KeyFace_API, UrlFace_API); var faces = await client.DetectAsync(stream, true, true); var attFace = faces.FirstOrDefault(); if (attFace != null) { AllRegister registerValueActivities = new AllRegister(); Calculate cal = new Calculate(); #region Mouth /// Mouth if (attFace.FaceLandmarks != null) { registerValueActivities.mouth = new Tb_Mouth(); registerValueActivities.mouth.MouthLeft_X = attFace.FaceLandmarks.MouthLeft.X; registerValueActivities.mouth.MouthLeft_Y = attFace.FaceLandmarks.MouthLeft.Y; registerValueActivities.mouth.MouthRight_X = attFace.FaceLandmarks.MouthRight.X; registerValueActivities.mouth.MouthRight_Y = attFace.FaceLandmarks.MouthRight.Y; registerValueActivities.mouth.UpperLipBottom_X = attFace.FaceLandmarks.UpperLipBottom.X; registerValueActivities.mouth.UpperLipBottom_Y = attFace.FaceLandmarks.UpperLipBottom.Y; registerValueActivities.mouth.UnderLipBottom_X = attFace.FaceLandmarks.UnderLipBottom.X; registerValueActivities.mouth.UnderLipBottom_Y = attFace.FaceLandmarks.UnderLipBottom.Y; registerValueActivities.mouth.UpperLipTop_X = attFace.FaceLandmarks.UpperLipTop.X; registerValueActivities.mouth.UpperLipTop_Y = attFace.FaceLandmarks.UpperLipTop.Y; registerValueActivities.mouth.UnderLipTop_X = attFace.FaceLandmarks.UnderLipTop.X; registerValueActivities.mouth.UnderLipTop_Y = attFace.FaceLandmarks.UnderLipTop.Y; registerValueActivities.mouth.MouthAperture = cal.CalMouth(attFace.FaceLandmarks.MouthRight.X , attFace.FaceLandmarks.MouthLeft.X , attFace.FaceLandmarks.UpperLipBottom.Y , attFace.FaceLandmarks.UnderLipTop.Y); } #endregion #region Head if (attFace.FaceAttributes != null) { registerValueActivities.head = new Tb_Head(); registerValueActivities.head.HeadPost_Pitch = attFace.FaceAttributes.HeadPose.Pitch; registerValueActivities.head.HeadPost_Roll = attFace.FaceAttributes.HeadPose.Roll; registerValueActivities.head.HeadPost_Yaw = attFace.FaceAttributes.HeadPose.Yaw; registerValueActivities.head.HeadPost_PoseDeviation = cal.CalHead(attFace.FaceAttributes.HeadPose.Yaw); } #endregion #region Eyes //Left if (attFace.FaceLandmarks != null) { registerValueActivities.eye = new Tb_Eye(); registerValueActivities.eye.EyeLeftInner_X = attFace.FaceLandmarks.EyeLeftInner.X; registerValueActivities.eye.EyeLeftInner_Y = attFace.FaceLandmarks.EyeLeftInner.Y; registerValueActivities.eye.EyeLeftBottom_X = attFace.FaceLandmarks.EyeLeftBottom.X; registerValueActivities.eye.EyeLeftBottom_Y = attFace.FaceLandmarks.EyeLeftBottom.Y; registerValueActivities.eye.EyeLeftOuter_X = attFace.FaceLandmarks.EyeLeftOuter.X; registerValueActivities.eye.EyeLeftOuter_Y = attFace.FaceLandmarks.EyeLeftOuter.Y; registerValueActivities.eye.EyeLeftTop_X = attFace.FaceLandmarks.EyeLeftTop.X; registerValueActivities.eye.EyeLeftTop_Y = attFace.FaceLandmarks.EyeLeftTop.Y; //Right registerValueActivities.eye.EyeRightInner_X = attFace.FaceLandmarks.EyeRightInner.X; registerValueActivities.eye.EyeRightInner_Y = attFace.FaceLandmarks.EyeRightInner.Y; registerValueActivities.eye.EyeRightBottom_X = attFace.FaceLandmarks.EyeRightBottom.X; registerValueActivities.eye.EyeRightBottom_Y = attFace.FaceLandmarks.EyeRightBottom.Y; registerValueActivities.eye.EyeRightOuter_X = attFace.FaceLandmarks.EyeRightOuter.X; registerValueActivities.eye.EyeRightOuter_Y = attFace.FaceLandmarks.EyeRightOuter.Y; registerValueActivities.eye.EyeRightTop_X = attFace.FaceLandmarks.EyeRightTop.X; registerValueActivities.eye.EyeRightTop_Y = attFace.FaceLandmarks.EyeRightTop.Y; registerValueActivities.eye.EyeRightTop_Y = cal.CalEyes(attFace.FaceLandmarks.EyeLeftInner.X , attFace.FaceLandmarks.EyeLeftOuter.X , attFace.FaceLandmarks.EyeLeftBottom.Y , attFace.FaceLandmarks.EyeLeftTop.Y , attFace.FaceLandmarks.EyeRightInner.X , attFace.FaceLandmarks.EyeRightOuter.X , attFace.FaceLandmarks.EyeRightBottom.Y , attFace.FaceLandmarks.EyeRightTop.Y); } #endregion registerValue = registerValueActivities; } else { await DisplayAlert("Take Photo", "Please Re Take Photo", "OK"); return; } } imageShow.Source = streamPic; } catch (Exception ex) { var ddd = ex.Message; } }