Я хочу загрузить изображение с сервера и отобразить его. Я получаю заголовок с типом 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; }
}
@Jason Я добавил модель выше
Изображение, загруженное с URL-адреса, уже закодировано в Base64 или это просто png? Кажется, вы создаете для себя дополнительную работу, сохраняя ее в Base64, если в этом нет необходимости. Как правило, наиболее эффективный способ сделать это - записать изображение в файл и просто сохранить путь к файлу в вашей модели.
@Jason only png, но base64 У меня есть другой webapi, где я использую это. Whit base64 у меня проблем нет





Я что-то подобное делал, но не знаю, хорошо ли?
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;
}
Что такое AvatarModel? Как там представлено изображение?