Получить изображение из MVC, используя ImageSource.FromUri - PullRequest
0 голосов
/ 31 мая 2019

У меня есть веб-API MVC, которые публикуют изображения.Я пытаюсь получить изображение в свой проект xamarin, используя ImageSource.FromUri

Я полностью могу просмотреть это изображение на веб-сайте.но не в моем проекте xamarin.

что я делаю не так, мне интересно.вот мой код

API, который публикует изображение

   [HttpGet]
    [AllowAnonymous]
    public ActionResult GetImage(string imagePath)
    {
        var path = Path.Combine(Actions.ImageRootPath, imagePath);
        if (!System.IO.File.Exists(path))
            return new EmptyResult();

        var stream= System.IO.File.OpenRead(path);

        return File(stream, "image/png");
    }

xamarin xaml

    <Frame Style="{StaticResource FrameContainer}" WidthRequest="200" HeightRequest="150" CornerRadius="10" BorderColor="Transparent">
                        <StackLayout Orientation="Vertical">
                            <Image Source="{Binding Logo, Converter={StaticResource ImageSource}}" WidthRequest="200" />
                            <StackLayout  HorizontalOptions="CenterAndExpand" Style="{StaticResource Form}" Padding="10,0,0,0" Orientation="Vertical">
                                <Label Text="{Binding Name}" HorizontalOptions="Center" Style="{StaticResource Header}" />
                                <Label Text="{Binding TotalVideos}" IsVisible="{Binding TotalVideos, Converter={StaticResource StringNullOrEmpty}}" HorizontalOptions="Center" Style="{StaticResource UnderText}" />
                            </StackLayout>
                        </StackLayout>
                    </Frame>

ImageSource the converter

    if (value is string && value != null && value.ToString().Length >= 4 && !value.ToString().Contains("http"))
    {
        byte[] Base64Stream = System.Convert.FromBase64String(value.ToString());
        var img = ImageSource.FromStream(() => new MemoryStream(Base64Stream));
        return img;
    }
    else if (value is string && !string.IsNullOrEmpty(value?.ToString() ?? "") && value.ToString().Contains("http"))
    {
        var uri = new Uri(value.ToString());

        return ImageSource.FromUri(uri);
        //var data = Helper.HttpHelper.GetImage(value.ToString());
        //return GetImage(key, data.ToArray());

    }
    else if (value is byte[])
    {
        return ImageSource.FromStream(() => new MemoryStream(value as byte[]));
    }
    return ImageSource.FromFile("NoImage.png");

То, что я пробовал и работал, но мне не нравится

Этот код ниже работает, но я должен сначала загрузить изображение с помощью веб-клиента

    var data = Helper.HttpHelper.GetImage(value.ToString());
    return ImageSource.FromStream(() => new MemoryStream(data));

Вот изображение URL

http://youtubemanager.ddns.net/Youtube.Manager.API/Images/GetImage?imagePath=alen.toma%5Cc2e8bcaa-e258-453b-84c4-868d23b03848.png
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...