Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 22.11.2019, 18:01   #1
nikolaynn2008
Пользователь
 
Аватар для nikolaynn2008
 
Регистрация: 17.03.2016
Сообщений: 77
По умолчанию ImageSource сохранить в галереи устройств Android и iOS

Всем привет, столкнулся с ситуацией когда нужно с ImageSource сохранить с галереи устройств

Не могу правильно сделать конвертер с ImageSource в byte[]
Вроде делаю, ошибок нет но в тоже время ничего не сохраняет
Вот так выглядит Image
Код:
[XML]<Image x:Name="generateView" Source="Sample.Png" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" WidthRequest="300" HeightRequest="300" BackgroundColor="Aqua"/>[/XML]
Он изображает генерируемый в него QR_CODE
Вот так.
Код:
[CSHARP] private void GeneratedButton_Click(object sender, EventArgs e)
        {
            var text = DateTime.Now.Ticks.ToString();
            generateView.Source = ImageSource.FromStream(() =>
            {
                return DependencyService.Get<IBarcodeService>().ConvertImageStream(entGenerated.Text, 300, 300);
            });
        }[/CSHARP]
Для сохранения есть Кнопка
Код:
[CSHARP]private void SaveButton_Clicked(object sender, EventArgs e)
        {
            
            DependencyService.Get<ISaveImage>().SavePhotoAsync(generateView.Source, "Code.Jpeg");
          

        }
[/CSHARP]
Интерфейс
Код:
[CSHARP] public interface ISaveImage
    {
        Task<bool> SavePhotoAsync(byte[] data,  string filename);
    }[/CSHARP]
Dependency на Android
Код:
[CSHARP]public async Task<bool> SavePhotoAsync(byte[] data, string filename)
        {
            string folder = "ScanReader";
            try
            {
                File picturesDirectory = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures);
                File folderDirectory = picturesDirectory;

                if (!string.IsNullOrEmpty(folder))
                {
                    folderDirectory = new File(picturesDirectory, folder);
                    folderDirectory.Mkdirs();
                }

                using (File bitmapFile = new File(folderDirectory, filename))
                {
                    bitmapFile.CreateNewFile();

                    using (FileOutputStream outputStream = new FileOutputStream(bitmapFile))
                    {
                        await outputStream.WriteAsync(data);
                    }

                    // Make sure it shows up in the Photos gallery promptly.
                    MediaScannerConnection.ScanFile(MainActivity.Instance,
                                                    new string[] { bitmapFile.Path },
                                                    new string[] { "image/png", "image/jpeg" }, null);
                }
            }
            catch
            {
                return false;
            }

            return true;[/CSHARP]
Dependency на iOS

Код:
 [CSHARP]public Task<bool> SavePhotoAsync(byte[] data, string filename)
        {
            NSData nsData = NSData.FromArray(data);
            UIImage image = new UIImage(nsData);
            TaskCompletionSource<bool> taskCompletionSource = new TaskCompletionSource<bool>();

            image.SaveToPhotosAlbum((UIImage img, NSError error) =>
            {
                taskCompletionSource.SetResult(error == null);
            });

            return taskCompletionSource.Task;
        }[/CSHARP]
Помогите пожалуйста решить задачку
...
nikolaynn2008 вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SimpleADB - программа для отладки Android устройств kandiral Софт 0 09.02.2018 11:46
Нужно изготовить программу мессенджер для мобильных устройств (Android, IOS). Олег Х Фриланс 2 10.04.2016 08:55
Курсовая работа: Программирование для мобильных устройств на OS Google Android SmeniNick Фриланс 2 01.10.2013 22:29
Забиндить ImageBrush ImageSource coNsept Общие вопросы .NET 1 28.11.2012 05:00