Форум программистов, компьютерный форум, киберфорум
Xamarin
Войти
Регистрация
Восстановить пароль
 
nikolaynn1984
2 / 2 / 0
Регистрация: 27.04.2016
Сообщений: 137
1

ImageSource сохранить в галереи устройств Android и iOS

22.11.2019, 16:50. Просмотров 374. Ответов 0

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

Не могу правильно сделать конвертер с ImageSource в byte[]
Вроде делаю, ошибок нет но в тоже время ничего не сохраняет
Вот так выглядит Image
XML
1
2
3
4
5
<Image x:Name="generateView" 
                     Source="Sample.Png" 
                   Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" 
                    WidthRequest="300" HeightRequest="300" 
                  BackgroundColor="Aqua"/>
Он изображает генерируемый в него QR_CODE
Вот так.
C#
1
2
3
4
5
6
7
8
 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);
 });
        }
Для сохранения есть Кнопка
C#
1
2
3
4
5
6
7
private void SaveButton_Clicked(object sender, EventArgs e)
{
            
 DependencyService.Get<ISaveImage>().SavePhotoAsync(generateView.Source, "Code.Jpeg");
          
 
}
Интерфейс
C#
1
2
3
4
 public interface ISaveImage
    {
        Task<bool> SavePhotoAsync(byte[] data,  string filename);
    }
Dependency на Android
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
Dependency на iOS

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
        }
Помогите пожалуйста решить задачку)))
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2019, 16:50
Ответы с готовыми решениями:

Вакансия разработчика (приложение для устройств IOS, ANDROID с поддержкой планшетов)
Необходимо сделать приложение для устройств IOS, ANDROID с поддержкой планшетов ТЗ - создание...

Android получение фотографий из галереи
Все привет! Необходимо реализовать получение масса всех фотографий из галерей + камеры. получать...

Qt android JNI - Вызов галереи
Доброго дня ! делаю вызов галереи: QAndroidJniObject action = QAndroidJniObject::fromString(...

Где посмотреть количество зарегестрированных ios устройств на рынке?
Всем привет, недавно услышал что к примеру нужно поддерживать версионность продукта в зависимости...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2019, 16:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Android vs IOS
Похоливарим на тему мобильных ОС. + за андроид.

Qt: Android и iOS
всем привет :) С Qt работаю уже второй семестр и хочу создать мобильное приложение Android и...

android и ios
Есть задача написать проект под android и ios, но к примеру меня нет гаджета, что бы проверить...

Приложение на iOS и Android
Ребят, нужна инфа. Так как новичок, немного нужно помощи разобраться что да как. Есть задание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.