Xamarin forms: ImageCropper.Формы: как удалить несколько всплывающих окон?

#xamarin.forms

#xamarin.forms

Вопрос:

Я использую ImageCropper.Формы для обрезки изображения, выбранного с камеры и галереи. У меня есть 3 варианта изменения изображения профиля; Сфотографировать, загрузить из галереи и выбрать аватар. Итак, для отображения параметров мультимедиа я использую DisplayActionSheet , как показано ниже:

 var actionSheet = await DisplayActionSheet(null,"Cancel", null, "Take Photo", "Upload from Gallery", "Select Avatar");
if (actionSheet == "Take Photo")
{
    OpenCamera();
}
else if(actionSheet == "Upload from Gallery")
{
    Opengallery();
}
else if(actionSheet == "Select Avatar")
{
    OpenAvatar();
}
 

OpenCamera() и Opengallery() добавлены ниже. Этот код также Take Photo снова запрашивает параметры Photo Library and в виде всплывающего окна. Мне не нужно это всплывающее окно, есть ли какой-нибудь способ удалить второе всплывающее окно, запрошенное ImageCropper.Forms и загрузить камеру или галерею напрямую?

Мой код:

     async void OpenCamera()
    {
        try
        {
            await CrossMedia.Current.Initialize();
            //I need to open camera only here, no need of a pop up again.
            new ImageCropper()
            {
                PageTitle = "Test Title",
                AspectRatioX = 1,
                AspectRatioY = 1,
                CropShape = ImageCropper.CropShapeType.Rectangle,
                SelectSourceTitle = "Select source",
                TakePhotoTitle = "Take Photo",
                PhotoLibraryTitle = "Photo Library",
                Success = (imageFile) =>
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        profilephoto.Source = ImageSource.FromFile(imageFile);
                    });
                }
            }.Show(this);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("CameraException:>"   ex);
        }
    }

async void Opengallery()
{
    try
    {
        await CrossMedia.Current.Initialize();
        //I need to open gallery only here, no need of a pop up again.
        new ImageCropper()
        {
            PageTitle = "Test Title",
            AspectRatioX = 1,
            AspectRatioY = 1,
            CropShape = ImageCropper.CropShapeType.Rectangle,
            SelectSourceTitle = "Select source",
            TakePhotoTitle = "Take Photo",
            PhotoLibraryTitle = "Photo Library",
            Success = (imageFile) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    profilephoto.Source = ImageSource.FromFile(imageFile);
                    //var stream = ImageSource.FromFile(imageFile);
                    //imagefile = imageFile;
                });
            }
        }.Show(this);
    }
}
 

Скриншот: https://i.stack.imgur.com/qYBuu.jpg

Ответ №1:

Предупреждение по умолчанию определено в пакете . Поэтому я не думаю, что мы можем заблокировать его напрямую. Если вы хотите задать его текст, вам просто нужно установить

 SelectSourceTitle = " ",
TakePhotoTitle = "Take Photo",
PhotoLibraryTitle = "Upload from Gallery"
 

Комментарии:

1. У меня есть еще одна проблема, связанная с этим пакетом, пожалуйста, дайте ответ на это.

2. В чем ваша проблема?

3. Мне нужно сохранить окончательное изображение на сервер, для этого мне нужно значение потока и пути конечного изображения, не могли бы вы, пожалуйста, проверить вопрос еще раз? (после скриншота)