Exemplo n.º 1
0
        public MediaPage()
        {
            InitializeComponent();
            takePhoto.Clicked += async(sender, args) =>
            {
                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No Camera", ":( No camera available.", "OK");

                    return;
                }

                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    Directory          = "Test",
                    SaveToAlbum        = true,
                    CompressionQuality = 75,
                    CustomPhotoSize    = 50,
                    PhotoSize          = PhotoSize.MaxWidthHeight,
                    MaxWidthHeight     = 2000,
                    DefaultCamera      = CameraDevice.Front
                });

                if (file == null)
                {
                    return;
                }
                string filePath = file.Path;
                await DisplayAlert("File Location", file.Path, "OK");

                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    file.Dispose();
                    return(stream);
                });

                ILocalFileProvider service   = DependencyService.Get <ILocalFileProvider>(DependencyFetchTarget.NewInstance);
                byte[]             byteArray = null;
                using (service as IDisposable)
                {
                    byteArray = service.GetFileBytes(filePath);
                }
                FreeOCR free = new FreeOCR();

                string retVal = await free.SendImageAsync(byteArray);

                lblResult.Text = retVal.Trim();

                IDeleteFromFile deleteService = DependencyService.Get <IDeleteFromFile>(DependencyFetchTarget.NewInstance);
                using (deleteService as IDisposable)
                {
                    deleteService.DeleteFile(filePath);
                }
                image.Source = null;
            };

            pickPhoto.Clicked += async(sender, args) =>
            {
                if (!CrossMedia.Current.IsPickPhotoSupported)
                {
                    await DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");

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

                if (file == null)
                {
                    return;
                }

                image.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    file.Dispose();
                    return(stream);
                });
            };
        }