Как обрабатывать картинки Xamarin.Forms, SQLite, C# - PullRequest
1 голос
/ 03 марта 2020

Я создаю мобильное приложение, в котором пользователь может размещать рекламу с изображениями и текстом. Я использую Media.Plugin от Джеймса Монтемагно. Это работает очень хорошо. Также пользователь должен иметь возможность нажать на картинку, чтобы просмотреть и, возможно, удалить. Я не уверен, как получить доступ к этим изображениям, я не знаю, где они хранятся, поэтому даже если я захочу удалить их, я не уверен, как получить доступ к каждому изображению. Не могли бы вы мне помочь? Пользователь может сделать несколько изображений, а затем они отображаются на главной странице. Я бы хотел, чтобы пользователь мог еще раз просмотреть их, а затем, если он продолжит их на второй странице, он загрузит некоторые другие данные, и на третьей странице все они должны отображаться вместе. Как я могу отобразить картинки на третьей странице?

public partial class AddingPage : ContentPage
    {
        AdLogEntry adLogEntry = new AdLogEntry();
        //CameraService cameraService = new CameraService();
        public byte[] imageAsBytes;
        public string pathLabel;
        private const int MaxColumns = 3;
        private int _currentRow = 0;
        private int _currentColumn = 0;


        public AddingPage()
        {
            InitializeComponent();

        }

        protected override async void OnAppearing()
        {
            base.OnAppearing();

            await MainProgressBar.ProgressTo(0, 250, Easing.Linear); ;
        }
        private async void NextStep_Clicked(object sender, EventArgs e)
        {
            await Navigation.PushAsync(new Informations());
        }

        private async void TakePicture_Clicked(object sender, EventArgs e)
        {

            await TakePicture();

        }

private async Task TakePicture()
        {
            MediaFile file = null;

            await CrossMedia.Current.Initialize();

            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await DisplayAlert("Nemáme přístup", "Nelze nalézt kameru", "OK");
                return;
            }

            var imageSource = await DisplayActionSheet("Foto", "Cancel", null, new string[] { "Pořídit novou fotku", "Nahrát foto z galerie" });
            var photoName = Guid.NewGuid().ToString() + ".jpg";

            switch (imageSource)
            {
                case "Pořídit novou fotku":
                    file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
                    {
                        SaveToAlbum = true,
                        Directory = "Photos",
                        Name = photoName
                    });
                    //Get the public album path
                    var aPpath = file.AlbumPath;

                    //Get private path
                    var path = file.Path;

                    break;

                case "Nahrát foto z galerie":
                    file = await CrossMedia.Current.PickPhotoAsync();
                    //Directory.GetFiles( "Photos");
                    break;

                default:
                    break;
            }

            if (file == null)
                return;

            // Photo => Grid 
            _currentColumn++;

            if (_currentColumn > MaxColumns - 0)
            {
                _currentColumn++;
                _currentRow++;

                // Add a new row definition by copying the first row.
                ImageGridContainer.RowDefinitions.Add(ImageGridContainer.RowDefinitions[0]);
            }

            var newImage = new Image()
            {
                Source = ImageSource.FromFile(file.Path),
                VerticalOptions = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                Aspect = Aspect.AspectFill,
                Scale = 0
            };

            ImageGridContainer.Children.Add(newImage, _currentColumn, _currentRow);

            await Task.Delay(250);

            await newImage.ScaleTo(1, 250, Easing.SpringOut);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...