Скачивание образа с сервера и конвертация

Я хочу загрузить изображение с сервера и отобразить его. Я получаю заголовок с типом image / png, как теперь преобразовать в изображение?

Я получаю заголовок:

Cache-Control: public, max-age=86400 Connection: Keep-Alive Date: Fri, 30 Nov 2018 12:32:08 GMT Keep-Alive: timeout=5, max=99 OkHttp-Received-Millis: 1543581128745 OkHttp-Selected-Protocol: http/1.1 OkHttp-Sent-Millis: 1543581128514 Server: Apache/2.4.33 (Amazon) OpenSSL/1.0.2k-fips PHP/7.0.30 X-Powered-By: PHP/7.0.30 Content-Length: 26190 Content-Type: image/png Keep-Alive: timeout=5, max=99 OkHttp-Received-Millis: 1543581128745 OkHttp-Selected-Protocol: http/1.1 OkHttp-Sent-Millis: 1543581128514 X-Powered-By: PHP/7.0.30 }}

 public async Task<AvatarModel> GetAvatar(string dpi, Int64 uin)
    {
        var response = await BasicRequestAsync(string.Format(AVATAR_URL, dpi, uin), HttpMethod.Get, true, null, null, false);

        if (response == null) return null;

        var stream = await response.Content.ReadAsStreamAsync();
        .....
    }

Сервер: ЗАГОЛОВКИ:

IMToken: 123123123
uin: 123
user-agent:...

Возвращает распакованное изображение с заголовком Тип содержимого: изображение / png

 public class AvatarModel
{
    public AvatarModel() { }

    public AvatarModel(AvatarResponseModel model)
    {
        Id = model.Id;
        Base64 = model.Base64;
    }

    public Int64 Id { get; set; }

    private string base64;
    public string Base64
    {
        get { return base64; }
        set
        {
            base64 = value;

            AvatarImage = Xamarin.Forms.ImageSource.FromStream(
                () => new MemoryStream(Convert.FromBase64String(base64)));
        }
    }

    public ImageSource AvatarImage { get; set; }
}


  public class AvatarResponseModel
    {
        [JsonProperty("Id")]
        public Int64 Id { get; set; }

        [JsonProperty("base64")]
        public string Base64 { get; set; }
    }

Что такое AvatarModel? Как там представлено изображение?

Jason 02.12.2018 19:44

@Jason Я добавил модель выше

user9462874 02.12.2018 19:48

Изображение, загруженное с URL-адреса, уже закодировано в Base64 или это просто png? Кажется, вы создаете для себя дополнительную работу, сохраняя ее в Base64, если в этом нет необходимости. Как правило, наиболее эффективный способ сделать это - записать изображение в файл и просто сохранить путь к файлу в вашей модели.

Jason 02.12.2018 20:19

@Jason only png, но base64 У меня есть другой webapi, где я использую это. Whit base64 у меня проблем нет

user9462874 03.12.2018 08:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
59
1

Ответы 1

Я что-то подобное делал, но не знаю, хорошо ли?

 public async Task<Image> GetAvatar(string dpi, Int64 uin)
        {
            var response = await BasicRequestAsync(string.Format(AVATAR_URL, dpi, uin), HttpMethod.Get, true, null, null, false);

            if (response == null) return null;

            var stream = await response.Content.ReadAsByteArrayAsync();

            Image image = new Image();

            image.Source = ImageSource.FromStream(() => new MemoryStream(stream));

            return image;
        }

Другие вопросы по теме