Как я могу применить FFImageLoading DownSample к изображению, у которого есть свой DataArray? - PullRequest
0 голосов
/ 24 марта 2020

Я использую FFImageLoading для обрезки / поворота изображения, выбранного с помощью Xamarin.Plugin.FilePicker (версия 1.1.0). Этот инструмент выбора позволяет получить только DataArray и имя файла, но он не обслуживает путь к файлу. Я видел в inte rnet некоторые потоки, говорящие о свойстве .FilePath, но оно не отображается для меня.

Итак, я получаю файл:

FileData filedata = await CrossFilePicker.Current.PickFile();

DownSample it:

var a = await ImageService.Instance.LoadBase64String(Convert.ToBase64String(filedata.DataArray)).DownSample(300).AsJPGStreamAsync();

Затем я преобразую из потока в источник изображения:

ImageSource imagem = ImageSource.FromStream(() =>a);

Но я всегда получаю:

Image loading failed: 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

FFImageLoading.DownloadAggregateException: One or more errors occurred. (An invalid request URI was provided. The request URI must either be an absolute URI or BaseAddress must be set.)

Я знаю, что делаю что-то не так в этих конверсиях, но пока не могу найти ошибку.

1 Ответ

0 голосов
/ 25 марта 2020

Если вы хотите выбрать фотографии из системного альбома, вы можете установить плагин Xam.Plugin.Media из nuget.

Использование

await CrossMedia.Current.Initialize();

if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
    DisplayAlert("No Camera", ":( No camera available.", "OK");
    return;
}

var file = await CrossMedia.Current.PickPhotoAsync();

if (file == null)
    return;

await DisplayAlert("File Location", file.Path, "OK");

image.Source = ImageSource.FromStream(() =>
{
    var stream = file.GetStream();
    return stream;
}); 

Подробнее детали вы можете проверить https://github.com/jamesmontemagno/MediaPlugin.

...