public async void AddPhoto()
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                await Application.Current.MainPage.DisplayAlert("No upload", "Picking a photo is not supported", "Ok");

                return;
            }
            file = await CrossMedia.Current.PickPhotoAsync();

            if (file == null)
            {
                return;
            }
            ImageS = ImageSource.FromStream(() => file.GetStream()).ToString();
        }
Пример #2
0
        public CameraSavePage(Plugin.Media.Abstractions.MediaFile passImage)
        {
            InitializeComponent();
            SaveButton.Clicked   += SaveButton_Clicked;
            btnNewTag.Clicked    += BtnNewTag_Clicked;
            btnAddTag.Clicked    += BtnAddTag_Clicked;
            btnRemoveTag.Clicked += BtnRemoveTag_Clicked;
            btnResetTags.Clicked += BtnResetTags_Clicked;

            //init the necessary data
            pictureData.rating  = 0;
            pictureData.tags    = new List <String>();
            spinner.ItemsSource = jsonTB.GetTags();
            saveImage           = passImage;

            setupFillData(passImage);
        }
Пример #3
0
        private async void AddImage_Clicked(object sender, EventArgs e)
        {
            if (this.BugImage.IsEnabled)
            {
                switch (await this.DisplayActionSheet("Image Options", "Cancel", "Remove", "Change"))
                {
                case "Cancel":
                    return;

                case "Remove":
                    this.BugImage.IsEnabled      = false;
                    this.BugImageFrame.IsEnabled = false;
                    this.BugImageFrame.IsVisible = false;
                    this.ImagePath = null;
                    return;

                case "Change":
                default:
                    break;
                }
            }

            await CrossMedia.Current.Initialize();

            Plugin.Media.Abstractions.MediaFile file = await CrossMedia.Current.PickPhotoAsync();

            if (file != null) // if the user actually picked an image
            {
                MemoryStream memoryStream = new MemoryStream();
                file.GetStream().CopyTo(memoryStream);

                if (memoryStream.Length < 3000000)
                {
                    this.BugImage.IsEnabled      = true;
                    this.BugImageFrame.IsEnabled = true;
                    this.BugImageFrame.IsVisible = true;
                    this.BugImage.Source         = FileImageSource.FromFile(file.Path);
                    this.ImagePath = file.Path;
                }
                else
                {
                    await this.DisplayAlert("Couldn't use Picture", "Pictures must be under 3 MB", "Back");
                }
                file.Dispose();
            }
        }
Пример #4
0
        private async void ImageButton_ClickedAsync(object sender, EventArgs e)
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                await DisplayAlert("no upload", "picking a photo is not supported", "Ok");

                return;
            }

            file = await CrossMedia.Current.PickPhotoAsync();

            if (file == null)
            {
                return;
            }

            Image.Source = ImageSource.FromStream(() => file.GetStream());
        }
Пример #5
0
        private async void ImageChoose()
        {
            try
            {
                await CrossMedia.Current.Initialize();

                Plugin.Media.Abstractions.MediaFile file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions()
                {
                    PhotoSize          = Plugin.Media.Abstractions.PhotoSize.Medium,
                    CompressionQuality = 80
                });

                if (file == null)
                {
                    return;
                }
                Acr.UserDialogs.UserDialogs.Instance.ShowLoading(AppResource.alertLoading);

                imgProduct.Source = ImageSource.FromStream(() =>
                {
                    Stream img = file.GetStream();
                    return(img);
                });

                Stream stream = file.GetStream();
                byte[] imageData;

                using (MemoryStream ms = new MemoryStream())
                {
                    stream.CopyTo(ms);
                    imageData = ms.ToArray();
                }

                _imageStream = new MemoryStream(imageData);
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            finally
            {
                Acr.UserDialogs.UserDialogs.Instance.HideLoading();
            }
        }
Пример #6
0
        private async Task InsertFaultPicture(Plugin.Media.Abstractions.MediaFile picture)
        {
            byte[] pictureBytes;

            using (var memoryStream = new MemoryStream())
            {
                picture.GetStream().CopyTo(memoryStream);
                picture.Dispose();
                pictureBytes = memoryStream.ToArray();
            }

            var dbPicture = new FaultPicture
            {
                Picture = pictureBytes,
                FaultId = faultContext.FaultId
            };

            await DatabaseService.InsertFaultPicture(dbPicture);
        }
Пример #7
0
        private async Task takePhoto()
        {
            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await DisplayAlert("מצלמה לא זמינה", "וודא שקיימת הרשאה למצלמה", "חזור");

                m_Photo = null;
            }
            else
            {
                m_Photo = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Small, //******
                    Directory = "Sample",
                    Name      = "test.jpg"
                });
            }
        }
Пример #8
0
        public static async Task <IMediaFile> Convert(this Plugin.Media.Abstractions.MediaFile source)
        {
            if (source != null)
            {
                var extension = Path.GetExtension(source.Path);
                extension = string.IsNullOrEmpty(extension) ? null : extension;

                using (var mediaStream = source.GetStream())
                    using (var memoryStream = new MemoryStream())
                    {
                        await mediaStream.CopyToAsync(memoryStream);

                        return(new MediaFile(extension, memoryStream.ToArray()));
                    }
            }
            else
            {
                return(null);
            }
        }
Пример #9
0
        public async void PickPhoto_Tapped()
        {
            currcount = 0;
            ClassifierResult_Label.Text = string.Empty;

            Plugin.Media.Abstractions.MediaFile file = null;

            await CrossMedia.Current.Initialize();

            try
            {
                file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
                });

                if (file == null)
                {
                    return;
                }

                SelectedImageSource = ImageSource.FromStream(() =>
                {
                    try
                    {
                        var stream = file.GetStream();
                        return(stream);
                    }
                    catch
                    {
                        return(null);
                    }
                });

                ClassifierResult = await Classifier.GetImageTags(file.GetStream());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
        public async Task Convert()
        {
            var bytes = new byte[] { 1 };
            var media = new Plugin.Media.Abstractions.MediaFile("/hoge/foo/bar/image.jpg", () => new MemoryStream(bytes));

            var actual = await media.Convert();

            Assert.NotNull(actual);
            Assert.Equal(".jpg", actual.Extension);

            using (var sourceStream = actual.GetStream())
                using (var memoryStream = new MemoryStream())
                {
                    Assert.NotNull(sourceStream);
                    sourceStream.CopyTo(memoryStream);

                    var actualArray = memoryStream.ToArray();
                    Assert.Equal(1, actualArray.Length);
                    Assert.Equal(bytes[0], actualArray[0]);
                }
        }
        public string SaveFotoFromAlbum(string caminhoFoto, Plugin.Media.Abstractions.MediaFile file)
        {
            string nomeArquivo;

            if (caminhoFoto == null || caminhoFoto.StartsWith("http"))
            {
                nomeArquivo = String.Format("{0:ddMMyyy_HHmm}", DateTime.Now) + ".jpg";
            }
            else
            {
                if (File.Exists(DependencyService.Get <IFotoLoadMediaPlugin>().GetPathToPhoto(caminhoFoto)))
                {
                    File.Delete(DependencyService.Get <IFotoLoadMediaPlugin>().GetPathToPhoto(caminhoFoto));
                }

                nomeArquivo = (caminhoFoto.LastIndexOf("/") > 0) ? caminhoFoto.Substring(caminhoFoto.LastIndexOf("/") + 1) : caminhoFoto;
            }

            viewModel.NomeArquivo = nomeArquivo;
            return(file.Path);
        }
Пример #12
0
        private async void FromCamera()
        {
            try
            {
                if (!CrossMedia.Current.IsPickPhotoSupported)
                {
                    DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
                    return;
                }
                profileData = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
                });


                if (profileData == null)
                {
                    return;
                }

                imgProfile.Source = ImageSource.FromStream(() =>
                {
                    var stream = profileData.GetStream();

                    //file.Dispose();
                    return(stream);
                });

                var bytearray = StaticMethods.StreamToByte(profileData.GetStream());
                var base64    = Convert.ToBase64String(bytearray);
                var extsn     = Path.GetExtension(profileData.Path);
                var str       = extsn.Split('.');
                extsn = str[1];
                UpdateProfilePic(base64, extsn);
            }
            catch (Exception ex)
            {
            }
        }
Пример #13
0
        private async Task GetPhotoCam()
        {
            try
            {
                await CrossMedia.Current.Initialize();

                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    DependencyService.Get <IMessage>().ShortAlert("No camera available.");
                    await Navigation.PopModalAsync();
                }

                Plugin.Media.Abstractions.MediaFile file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory     = "Profile_Pictures",
                    Name          = $"Confessor{Guid.NewGuid().ToString().Replace("-", "")}.png",
                    SaveToAlbum   = true,
                    AllowCropping = true,
                    DefaultCamera = Plugin.Media.Abstractions.CameraDevice.Front,
                    SaveMetaData  = true
                });

                if (file == null)
                {
                    await Navigation.PopModalAsync();
                }
                else
                {
                    Stream stream = file.GetStream();
                    bufferMemory = Logic.GetByteArrayFromString(stream);
                    ProcessPhotoInStream(stream);
                }
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex, Logic.GetErrorProperties(ex));
                await Navigation.PopModalAsync();
            }
        }
Пример #14
0
        private async void TakePhoto_Clicked(object sender, EventArgs e)
        {
            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await DisplayAlert("No Camera", ":( No camera available.", "OK");

                return;
            }

            theImage = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
            {
                SaveToAlbum = true,
                Name        = "test.jpg"
            });

            MyImage.Source = ImageSource.FromStream(() =>
            {
                var stream = theImage.GetStream();
                return(stream);
            });
        }
Пример #15
0
        public NewImagePage(Document document)
        {
            InitializeComponent();

            _document = document;

            takePhoto.Clicked += async(sender, args) =>
            {
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No Camera", ":( No camera avaialble.", "OK");

                    return;
                }

                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize   = Plugin.Media.Abstractions.PhotoSize.Small,
                    Directory   = "Sample",
                    Name        = "test.jpg",
                    SaveToAlbum = true
                });

                if (file == null)
                {
                    return;
                }

                _file = file;

                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    return(stream);
                });
            };
        }
Пример #16
0
        private void Llenar()
        {
            Movimientos mv1 = new Movimientos
            {
                ID         = "",
                observ     = "Ninguna",
                producto   = users1[0].nombre,
                marca      = users1[0].marca,
                modelo     = users1[0].modelo,
                IdProducto = users1[0].ID,
                codigo     = users1[0].codigo,
                serie      = users1[0].serie,
                cantidad   = "1",
                foto       = "",
                movimiento = "Retirar",
                lugar      = " ",
                fecha      = DateTime.Now.ToString("dd/MM/yyyy")
            };

            mv.Add(mv1);
            f2.Add(f);
            f1.Add(f);
            f = null;
        }
Пример #17
0
        /// <summary>
        /// Send picture to Azure, then return status
        /// </summary>
        /// <param name="photo">Photo taken by the player</param>
        /// <returns>True if success, False if something append</returns>
        async Task <bool> IGameRepository.SendValidationPic(Plugin.Media.Abstractions.MediaFile photo)
        {
            try
            {
                HttpContent fileStreamContent = new StreamContent(photo.GetStream());

                fileStreamContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
                {
                    Name = "file", FileName = CurrentUser.Player.Login + "-" + CurrentUser.CurrentStep.StepId + ".png"
                };

                fileStreamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");

                using (var client = new HttpClient())
                    using (var formData = new MultipartFormDataContent())
                    {
                        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + CurrentUser.Token);

                        formData.Add(fileStreamContent);
                        var response = await client.PostAsync(PedaGoServers.BaseApiUrl + "/api/uploadValidationPhoto", formData);

                        if (response.IsSuccessStatusCode)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
            }
            catch
            {
                return(false);
            }
        }
Пример #18
0
        private async void FromLibrary()
        {
            try
            {
                if (!isMultipleSelection)
                {
                    if (!CrossMedia.Current.IsPickPhotoSupported)
                    {
                        DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
                        return;
                    }
                    profileData = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                    {
                        PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
                    });


                    if (profileData == null)
                    {
                        return;
                    }


                    SetImage(fromImageView, profileData);
                    gvSingleImage.IsVisible   = false;
                    gvMultipleImage.IsVisible = true;
                }
                else
                {
                    var list = await DependencyService.Get <IiOSMethods>().MultiImagePicker();
                }
            }
            catch (Exception ex)
            {
            }
        }
Пример #19
0
        private void RemoveImage(int flag)
        {
            try
            {
                switch (flag)
                {
                case 1:
                    img1.Source       = "camera";
                    imageFillCounter1 = 0;
                    _file1            = null;
                    break;

                case 2:
                    img2.Source       = "camera";
                    imageFillCounter2 = 0;
                    _file2            = null;
                    break;

                case 3:

                    img3.Source       = "camera";
                    imageFillCounter3 = 0;
                    _file3            = null;
                    break;

                case 4:
                    img4.Source       = "camera";
                    imageFillCounter4 = 0;
                    _file4            = null;
                    break;
                }
            }
            catch (Exception ex)
            {
            }
        }
Пример #20
0
        private async void SelectImage_Clicked(object sender, EventArgs e)
        {
            var actionSheet = await DisplayActionSheet("Tuỳ chọn", "Đóng", null, "Chụp ảnh", "Chọn ảnh");


            Plugin.Media.Abstractions.MediaFile file = null;

            if (actionSheet == "Chụp ảnh")
            {
                await CrossMedia.Current.Initialize();

                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("Máy ảnh", "Máy ảnh không khả dụng", "Đóng");

                    gridLoading.IsVisible = false;
                    return;
                }


                PermissionStatus cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);

                if (cameraStatus != PermissionStatus.Granted)
                {
                    if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Camera))
                    {
                        await DisplayAlert("Quyền truy cập máy ảnh", "Sim ,ere cần truy cập vào máy ảnh để chụp hình cho ảnh đại diện", "Đồng ý");
                    }
                    if (Device.RuntimePlatform == Device.iOS)
                    {
                        cameraStatus = await PermissionHelper.CheckPermissions(Permission.Camera, "Quyền truy cập máy ảnh", "Sim Here cần truy cập vào máy ảnh để chụp hình cho ảnh đại diện");
                    }
                    else
                    {
                        var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Camera);

                        cameraStatus = results[Permission.Camera];
                    }
                }
                if (cameraStatus == PermissionStatus.Granted)
                {
                    gridLoading.IsVisible = true;
                    file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        SaveToAlbum    = false,
                        PhotoSize      = Plugin.Media.Abstractions.PhotoSize.MaxWidthHeight,
                        MaxWidthHeight = 300,
                    });
                }
            }
            else if (actionSheet == "Chọn ảnh")
            {
                await CrossMedia.Current.Initialize();

                Permission pickPhotoStatus = Permission.Storage;
                if (Device.RuntimePlatform == Device.iOS)
                {
                    pickPhotoStatus = Permission.Photos;
                }


                PermissionStatus photoPermisstionStatue = await CrossPermissions.Current.CheckPermissionStatusAsync(pickPhotoStatus);

                if (photoPermisstionStatue != PermissionStatus.Granted)
                {
                    if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(pickPhotoStatus))
                    {
                        await DisplayAlert("Quyền truy cập hình ảnh", "Sim Here cần truy cập vào thư viện hình ảnh để đặt anh đại ", "Đồng ý");
                    }
                    if (Device.RuntimePlatform == Device.iOS)
                    {
                        photoPermisstionStatue = await PermissionHelper.CheckPermissions(pickPhotoStatus, "Quyền truy cập hình ảnh", "Sim Here muốn truy cập vào thư viện hình ảnh của bạn để lấy hình ảnh đặt làm ảnh đại diện cho bạn.");
                    }
                    else
                    {
                        var results = await CrossPermissions.Current.RequestPermissionsAsync(pickPhotoStatus);

                        photoPermisstionStatue = results[pickPhotoStatus];
                    }
                }
                if (photoPermisstionStatue == PermissionStatus.Granted)
                {
                    gridLoading.IsVisible = true;
                    file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions()
                    {
                        MaxWidthHeight = 300,
                        PhotoSize      = Plugin.Media.Abstractions.PhotoSize.MaxWidthHeight
                    });
                }
            }
            else
            {
                gridLoading.IsVisible = false;
            }

            if (file == null)
            {
                gridLoading.IsVisible = false;
                return;
            }

            var client = BsdHttpClient.Instance();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", UserLogged.AccessToken);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            MultipartFormDataContent form = new MultipartFormDataContent();


            var stream  = file.GetStream();
            var content = new StreamContent(stream);

            content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
            {
                Name     = "files",
                FileName = "test.jpg"
            };

            form.Add(content);



            try
            {
                HttpResponseMessage response = await(client.PostAsync("api/user/changeavatar", form));
                string body = await response.Content.ReadAsStringAsync();

                ApiResponse apiResponse = JsonConvert.DeserializeObject <ApiResponse>(body);
                if (apiResponse.IsSuccess)
                {
                    string newFileName = apiResponse.Content.ToString();

                    ImageSource newImageSource = ImageSource.FromStream(() => file.GetStream());
                    SetAvatar(newImageSource);

                    TrackProfileChange.AvatarHasChanged = true;
                    UserLogged.AvatarUrl = AppConfig.API_IP + "Upload/Avatar/" + newFileName;
                    XFToast.ShortMessage("Cập nhật thành cộng");
                    gridLoading.IsVisible = false;
                }
                else
                {
                    await DisplayAlert("", "Không thể cập nhật ảnh đại diện", "Đóng");

                    gridLoading.IsVisible = false;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                gridLoading.IsVisible = false;
            }
        }
Пример #21
0
        public async void _bothButtons(bool isTakeClicked)
        {
            Plugin.Media.Abstractions.MediaFile file = null;
            //var file = (Plugin.Media.Abstractions.IMedia)null;
            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsPickPhotoSupported || !CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                if (isTakeClicked == false)
                {
                    Console.WriteLine("No Gallery", ":( No gallery available.", "OK");
                }
                else
                {
                    Console.WriteLine("No Camera", ":( No camera available.", "OK");
                }
                return;
            }

            if (isTakeClicked == true)
            {
                // Launch camera

                //progress.Indeterminate = true;
                //progress.SetCancelable(false);
                //progress.SetProgressStyle(Android.App.ProgressDialogStyle.Spinner);
                //progress.SetTitle("Please wait...");
                //progress.Show();


                file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory = "temp",
                    // CompressionQuality = 25,
                    SaveToAlbum = false
                });
            }
            else if (isTakeClicked == false)
            {
                // Choose from gallery

                file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    // CompressionQuality = 25
                });
            }
            if (file == null)
            {
                //progress.Dismiss();
                return;
            }

            string filePath = file.Path;

            file.Dispose();

            var TakePhoto = new Android.Content.Intent(this, typeof(TakePhotoActivity));

            TakePhoto.PutExtra("imageLocation", filePath);
            StartActivity(TakePhoto);
        }
Пример #22
0
        /// <summary>
        /// Adds an icon from storage
        /// </summary>
        async void AddIconStored()
        {
            await Xamarin.Forms.Application.Current.MainPage.Navigation.PopAllPopupAsync();

            await Plugin.Media.CrossMedia.Current.Initialize();

            var status = await Plugin.Permissions.CrossPermissions.Current.CheckPermissionStatusAsync(Plugin.Permissions.Abstractions.Permission.Photos);

            if (status != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
            {
                if (await Plugin.Permissions.CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Plugin.Permissions.Abstractions.Permission.Photos))
                {
                    await Acr.UserDialogs.UserDialogs.Instance.AlertAsync("Need access to photos to make icon");
                }

                var results = await Plugin.Permissions.CrossPermissions.Current.RequestPermissionsAsync(new[] { Plugin.Permissions.Abstractions.Permission.Photos });

                status = results[Plugin.Permissions.Abstractions.Permission.Photos];
            }

            if (status == Plugin.Permissions.Abstractions.PermissionStatus.Granted)
            {
                var userInput = await Acr.UserDialogs.UserDialogs.Instance.PromptAsync("Name the icon to add");

                if (userInput == null || string.IsNullOrWhiteSpace(userInput.Text))
                {
                    return;
                }

                Plugin.Media.Abstractions.MediaFile file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    CustomPhotoSize    = 500,
                    CompressionQuality = 80,
                    RotateImage        = true,
                });

                if (file == null || file.Path == null)
                {
                    return;
                }

                if (System.IO.File.Exists(@file.Path))
                {
                    byte[] imageArray = null;

                    //if (Device.RuntimePlatform == Device.Android)
                    //{
                    //    imageArray = DependencyService.Get<InterfaceBitmapResize>().RotateImage(@file.Path);
                    //}
                    //else
                    //{
                    imageArray = System.IO.File.ReadAllBytes(@file.Path);
                    //}

                    string base64ImageRepresentation = System.Convert.ToBase64String(imageArray);

                    file.Dispose();

                    Storage.CommunicationIcon dynamicIcon = new Storage.CommunicationIcon()
                    {
                        Tag                  = IconRoles.GetRoleInt(IconRoles.Role.Communication),
                        Text                 = userInput.Text,
                        Local                = false,
                        IsStoredInFolder     = false,
                        FolderContainingIcon = "",
                        Base64               = base64ImageRepresentation,
                        Scale                = 1f,
                        X = -1,
                        Y = -1
                    };

                    IconImage testImage = null;

                    try
                    {
                        testImage = App.ImageBuilderInstance.BuildCommunicationIconDynamic(icon: dynamicIcon);
                    }
                    catch
                    {
                        return;
                    }

                    SaveCommunicationIconEvent(testImage);
                }
            }
            else if (status != Plugin.Permissions.Abstractions.PermissionStatus.Unknown)
            {
                await Acr.UserDialogs.UserDialogs.Instance.AlertAsync("Can not continue, try again");
            }
        }
Пример #23
0
        //

        async void setupFillData(Plugin.Media.Abstractions.MediaFile passImage)
        {
            //Get the transferred image to the image box
            imgImage.Source = ImageSource.FromStream(() => { return(passImage.GetStream()); });

            //"Invisible" Operations: Set like status (discrete & not viewable) and get location (discrete but Viewable)
            //Like status operation already performed
            //Get the GeoLocation in Variables
            try
            {
                var geoRequest  = new GeolocationRequest(GeolocationAccuracy.Medium);
                var geoLocation = await Geolocation.GetLocationAsync(geoRequest);

                //if it's not null we got your location
                if (geoLocation != null)
                {
                    pictureData.location = geoLocation;
                    // await DisplayAlert("Location achieved", "Your Location is: " + pictureData.location.ToString(), "OK");
                }
            }
            //Else we don't have your location and we are substituting with temporary locations
            catch (FeatureNotSupportedException fnsEX)
            {
                //Not supported on device
                await DisplayAlert("Error: GPS Support", "GPS is not supported on this device", "OK");

                //               pictureData.location = null;
            }
            catch (FeatureNotEnabledException fneEX)
            {
                //Not enabled on device
                await DisplayAlert("Error: GPS Enabled/Disabled", "GPS is not enabled on this device", "OK");

//                pictureData.location = null;
            }
            catch (PermissionException pEX)
            {
                //Permission exception
                await DisplayAlert("Error: GPS Permission", "GPS permissions are not accepted on this device", "OK");

//                pictureData.location = null;
            }
            catch (Exception ex)
            {
                //couldn't get location
                await DisplayAlert("Error: GPS Functionality", "Could not get location", "OK");

//                pictureData.location = null;
            }

            //Set Date and Time
            pictureData.dateTime = DateTime.Now;

            //get date data (read only)
            datePickDate.Date = pictureData.dateTime.Date;

            //get time data (read only)
            timePickTime.Time = pictureData.dateTime.TimeOfDay;

            //display location time

            if (pictureData.location == null)
            {
                entLocation.Text = "No Location";
            }
            else
            {
                entLocation.Text = pictureData.location.ToString();
            }

            //Start working the spinnner
            //Populate the spinner

            //spinner = spinnerTB.LoadAvailableTags(pictureData.tags);
            spinner.ItemsSource = jsonTB.GetTags();

            //var picker = new Picker { Title = "Select a monkey", TitleColor = Color.Red };
            //picker.SetBinding(Picker.ItemsSourceProperty, "Monkeys");
            //picker.ItemDisplayBinding = new Binding("Name");


            //spinner function
            spinner.SelectedIndexChanged += (sender, args) =>
            {
                if (spinner.SelectedIndex != -1)
                {
                }
            };

            //Add Tags Field to add tags
            var entCellTags = new EntryCell {
                Label = "Tags: "
            };


            //Add a save button to save the picture with the data
            var save = new Button {
                Text = "Save Picture",
            };
        }
Пример #24
0
        async void SelectAttachFile(string fromWhere, string type)
        {
            Plugin.Media.Abstractions.MediaFile file = null;
            if (type == "image")
            {
                if (fromWhere == "library")
                {
                    file = await CrossMedia.Current.PickPhotoAsync();
                }
                else if (fromWhere == "camera")
                {
                    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsPickPhotoSupported)
                    {
                        return;
                    }
                    file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        Directory = "Drop",
                        Name      = "Image_" + DateTime.Now.ToString("dd-mm-yy_hh-mm-ss") + ".png"
                    });
                }

                if (file == null)
                {
                    return;
                }

                while (System.IO.File.ReadAllBytes(file.Path).Length == 0)
                {
                    System.Threading.Thread.Sleep(1);
                }

                var fileBytes = System.IO.File.ReadAllBytes(file.Path);
                var fileName  = "Image_" + DateTime.Now.ToString("dd-mm-yy_hh-mm-ss") + ".png";

                ItemModel.Image = new MediaFile(fileName, fileBytes);

                btnDropImageSymbol.SetImageResource(Resource.Drawable.icon_image_sel);
            }
            else if (type == "video")
            {
                if (fromWhere == "library")
                {
                    file = await CrossMedia.Current.PickVideoAsync();
                }
                else if (fromWhere == "camera")
                {
                    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsPickPhotoSupported)
                    {
                        return;
                    }
                    file = await CrossMedia.Current.TakeVideoAsync(new Plugin.Media.Abstractions.StoreVideoOptions
                    {
                        Directory = "Drop",
                        Quality   = Plugin.Media.Abstractions.VideoQuality.Medium,
                        Name      = "Video_" + DateTime.Now.ToString("dd-mm-yy_hh-mm-ss") + ".mp4",
                    });
                }

                if (file == null)
                {
                    return;
                }

                byte[] fileBytes1;
                using (var memoryStream = new MemoryStream())
                {
                    file.GetStream().CopyTo(memoryStream);
                    fileBytes1 = memoryStream.ToArray();
                }

                var fileName = "Video_" + DateTime.Now.ToString("dd-mm-yy_hh-mm-ss") + ".mp4";

                ItemModel.Video = new MediaFile(fileName, fileBytes1);

                btnDropVideoSymbol.SetImageResource(Resource.Drawable.icon_video_sel);
            }
        }
Пример #25
0
 public static byte[] GetByteFromMediaFile(Plugin.Media.Abstractions.MediaFile file)
 {
     return(File.ReadAllBytes(file.Path));
 }
Пример #26
0
        private async Task MakeRequest(Plugin.Media.Abstractions.MediaFile myFile)
        {
            IsLoading = true;
            ApiKeyServiceClientCredentials mykey = new ApiKeyServiceClientCredentials(SubscriptionKey);
            var visionApiClient = new ComputerVisionClient(mykey);
            //visionApiClient.AzureRegion = AzureRegions.Northeurope;
            var recognizedResult = await visionApiClient.RecognizePrintedTextAsync(false, "https://b.zmtcdn.com/data/menus/804/17883804/ccb6c1fbcc945d2824e9f5508cda9098.jpg");

            //var recognizedResult = await visionApiClient.RecognizePrintedTextInStreamAsync(false, myFile.GetStream);


            List <Model.MenuItem> menuItems = new List <Model.MenuItem>();

            foreach (var region in recognizedResult.Regions)
            {
                foreach (var line in region.Lines)
                {
                    string item1 = "";
                    foreach (var word in line.Words)
                    {
                        item1 += word;
                    }
                    menuItems.Add(new Model.MenuItem()
                    {
                        Title = item1
                    });
                }
            }
            IsLoading = false;
            await App.NavigationService.PushAsync(new MenuListingPage());

            /*var client = new HttpClient();
             * var queryString =  HttpUtility.ParseQueryString(string.Empty);
             *
             * // Request headers
             * client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", SubscriptionKey);
             *
             * // Request parameters
             * string queryparam = "mode=printed";
             * var uri = "https://northeurope.api.cognitive.microsoft.com/vision/v1.0/OCR?" + queryparam;
             *
             * HttpResponseMessage response;*/
            /*   //to use for sending files
             * using (var memoryStream = new System.IO.MemoryStream())
             * {
             *  myFile.GetStream().CopyTo(memoryStream);
             *  myFile.Dispose();
             *  using (var content = new ByteArrayContent(memoryStream.ToArray()))
             *  {
             *      content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
             *      response = await client.PostAsync(ComputerVisionApiURL, content);
             *  }
             * }
             *//*
             * string urlbody = "{'url':'https://i.pinimg.com/originals/bc/f4/c2/bcf4c20c441c9b67ac43ff399992adf7.jpg'}";
             * using (var content = new StringContent(urlbody))
             * {
             *  content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
             *  response = await client.PostAsync(ComputerVisionApiURL, content);
             *  if (response.StatusCode == System.Net.HttpStatusCode.Accepted)
             *  {
             *      var test = new List<string>(response.Headers.GetValues("Operation-Location"));
             *      var test2 = test[0];
             *      response = await client.PostAsync(test2, new StringContent(""));
             *      string contentString = await response.Content.ReadAsStringAsync();
             *  }
             *  else
             *  { string contentString = await response.Content.ReadAsStringAsync(); }
             * }*/
        }
Пример #27
0
        private async void btnTakePhoto_Clicked(object sender, EventArgs e)
        {
            await Plugin.Media.CrossMedia.Current.Initialize();

            var cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);

            var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);

            if (cameraStatus != PermissionStatus.Granted || storageStatus != PermissionStatus.Granted)
            {
                var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera, Permission.Storage });

                cameraStatus  = results[Permission.Camera];
                storageStatus = results[Permission.Storage];
            }

            if (cameraStatus == PermissionStatus.Granted && storageStatus == PermissionStatus.Granted)
            {
                if (Plugin.Media.CrossMedia.Current.IsCameraAvailable)
                {
                    Plugin.Media.Abstractions.MediaFile curPhoto = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(
                        new Plugin.Media.Abstractions.StoreCameraMediaOptions()
                    {
                        AllowCropping = false,
                        Directory     = "__temp__"
                    });

                    if (curPhoto != null)
                    {
                        szImageName = Path.GetFileName(curPhoto.Path);
                        curProjectSql.szTempProjectPath = Path.GetDirectoryName(curPhoto.Path);
                        string szFullImageName = Path.Combine(curProjectSql.szProjectPath, Path.GetFileName(curPhoto.Path));

                        File.Copy(curPhoto.Path, szFullImageName);

                        string   szDelPath = Path.GetDirectoryName(curPhoto.Path);
                        string[] files     = Directory.GetFiles(szDelPath, "*.*");
                        try
                        {
                            foreach (var file in files)
                            {
                                File.Delete(file);
                            }
                        }
                        catch (Exception)
                        {
                        }

                        var memoryStream = new MemoryStream();

                        using (var fileStream = new FileStream(szFullImageName, FileMode.Open, FileAccess.Read))
                        {
                            fileStream.CopyTo(memoryStream);
                        }
                        memoryStream.Position = 0;
                        PhotoImage.Source     = ImageSource.FromStream(() => memoryStream);
                        ShowMetadata();
                    }
                }
                else
                {
                    await DisplayAlert("No camera available", "Unable to take photos.", "OK");
                }
            }
            else
            {
                await DisplayAlert("Permissions Denied", "Unable to take photos.", "OK");

                //On iOS you may want to send your user to the settings screen.
                //CrossPermissions.Current.OpenAppSettings();
            }
        }
Пример #28
0
 public PictureChoosenEventArgs(Plugin.Media.Abstractions.MediaFile file)
 {
     File = file;
 }
Пример #29
0
        public FlujoViewModel(User usuario)
        {
            Globals.FlujoViewModelInstance = this;
            Usuario = usuario;
            MultiMediaPickerService = Globals.MultiMediaPickerService;
            RepositoryService       = Globals.RepositoryService;

            AddPhotoCommand = new Command((obj) =>
            {
                Plugin.Media.Abstractions.MediaFile mediaFile = obj as Plugin.Media.Abstractions.MediaFile;
                if (mediaFile == null)
                {
                    return;
                }

                if (Media == null)
                {
                    Media = new ObservableCollection <XGaleryPhotos.Models.MediaFile>();
                }

                Media.Add(new MediaFile()
                {
                    Id          = Guid.NewGuid().ToString(),
                    Type        = MediaFileType.Image,
                    Path        = mediaFile.Path,
                    PreviewPath = mediaFile.Path
                }
                          );
            });

            BuscarFlujoCommand = new Command((obj) =>
            {
                string flujoNro = obj as string;
                Flujo           = RepositoryService.GetFlujoByNro(flujoNro);
            });

            EnviarOnBaseCommand = new Command((obj) =>
            {
                Globals.RepositoryService.UpdateFotos(Flujo, Usuario.UserName);
            });

            PhotoTappedCommand = new Command((obj) =>
            {
                var mediaSelected = obj as XGaleryPhotos.Models.MediaFile;
                Globals.RepositoryService.AddMediaFile(mediaSelected);
                Globals.PhotoDisplayPageInstance.ResetSource();
                Globals.NavegacionPageInstance.PushAsync(Globals.PhotoDisplayPageInstance);
            });

            SelectImagesCommand = new Command(async(obj) =>
            {
                var hasPermission = await CheckPermissionsAsync();
                if (hasPermission)
                {
                    if (Media == null)
                    {
                        Media = new ObservableCollection <XGaleryPhotos.Models.MediaFile>();
                    }
                    await MultiMediaPickerService.PickPhotosAsync();
                }
            });

            MultiMediaPickerService.OnMediaPicked += (s, a) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    Media.Add(a);
                });
            };
        }