xamarin.forms сохранить файл/изображение

кодирование проекта формы xamarin, а также использование хранилища pcl. есть проблема с сохранением изображения или файла на устройстве, все примеры, которые я нашел, показывают, как сохранить поток массива байтов в файл, но ни один из них не показывает, как преобразовать изображение в пригодный для использования формат для сохранения.

        var webImage = new Image();
        webImage.Source = new UriImageSource
        {
            CachingEnabled = false,
            Uri = new Uri("http://server.com/image.jpg"),
        };
        byte[] image = ????(what i need)????(webImage.Source);

        // get hold of the file system  
        IFolder folder = rootFolder ?? FileSystem.Current.LocalStorage;

        // create a file, overwriting any existing file  
        IFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

        // populate the file with image data  
        using (System.IO.Stream stream = await file.OpenAsync(FileAccess.ReadAndWrite))
        {
            stream.Write(image, 0, image.Length);
        }

Другими словами, ищем код для сохранения изображения/файла на устройстве с URL-адреса.

Пробовал ffimageloading, так как он содержит конвертер в byte[], но всегда получаю ошибку: «Ссылка на объект не указывает на экземпляр объекта». для методов GetImageAsJpgAsync и GetImageAsPngAsync. проблема может заключаться в том, что изображение загружено не полностью. но событие завершения и команда завершения никогда не вызываются, даже если изображение полностью загружено на экран и привязано к cachedImage.

var cachedImage = new CachedImage()
{
     Source = "https://something.jpg",
     FinishCommand = new Command(async () => await TEST()),
};
cachedImage.Finish += CachedImage_Finish;


var image = await cachedImage.GetImageAsJpgAsync();

person Deathrain    schedule 23.09.2017    source источник


Ответы (1)


С FFImageLoading (я заметил, что вы его используете):

await ImageService.Instance.LoadUrl("https://something.jpg").AsJpegStream();

Если вы хотите получить исходное местоположение файла, используйте это:

await ImageService.Instance.LoadUrl("https://something.jpg").Success((imageInfo) => { //TODO imageInfo.FilePath } ).DownloadOnly();

person Daniel Luberda    schedule 25.10.2017