gpt4 book ai didi

c# - 在 GZIP 文件上使用 BitmapFactory.DecodeStreamAsync 将 URL 流式传输到 Android.Graphics.Bitmap

转载 作者:行者123 更新时间:2023-11-29 22:53:32 25 4
gpt4 key购买 nike

我需要将 url 解码为位图。我正在使用以下代码尝试解码流。

async Task <Android.Graphics.Bitmap> GetImageFromUrl(string url) {
using(var client = new HttpClient()) {
var response = await client.GetAsync(url);
if (response != null && response.StatusCode == HttpStatusCode.OK) {
using(var stream = await response.Content.ReadAsStreamAsync()) {
return await BitmapFactory.DecodeStreamAsync(stream);
}
}
return null;
}
}

提供的 url 是一张空白的黑色图像:https://assets.radiowave.io/prod/StationAssets/1/image-md.jpg

为什么 BitmapFactory.DecodeStreamAsync 总是返回 null?

最佳答案

您正在尝试将 GZIP 流传递给 DecodeStream,因此它无法确定您传递的类型图像。将 HttpClientHandler 添加到您的 HttpClient 启用自动解压。

仅供引用:如果此方法被多次调用,您应该将 HttpClient 视为单例并且只创建一次。

async Task<Android.Graphics.Bitmap> GetBitmapFromUrlAsync(string url)
{
var handler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip
};
using (var client = new HttpClient(handler))
{
var response = await client.GetAsync(url);
if (response != null && response.StatusCode == HttpStatusCode.OK)
{
using (var stream = await response.Content.ReadAsStreamAsync())
{
return await BitmapFactory.DecodeStreamAsync(stream);
}
}
return null;
}
}

关于c# - 在 GZIP 文件上使用 BitmapFactory.DecodeStreamAsync 将 URL 流式传输到 Android.Graphics.Bitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com