Xamarin Forms Android-Display .ico Image-错误:找不到任何有效的嵌入式ico编解码器

时间:2019-02-27 17:15:35

标签: xamarin.forms xamarin.android

我试图通过使用网站的favicon.ico文件显示与网站相关的图标。

在某些设备上这可以正常工作,但是在其他设备上,我在控制台中收到以下错误,并且图像显示为空白:

  

错误:找不到任何有效的嵌入式ico编解码器。

是否有一种方法可以包含其他编解码器,或者有人可以建议一种将其转换为Xamarin Forms中的PNG的方法吗?

1 个答案:

答案 0 :(得分:1)

找到了一个名为SkiaSharp的有用图像API,以Xamarin形式在.ico和.png之间进行转换:

文档:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/ https://docs.microsoft.com/en-us/dotnet/api/skiasharp?view=skiasharp-1.68.0

坚果:

https://www.nuget.org/packages/SkiaSharp

示例:

var iconUri = new Uri(this.URI + "/favicon.ico");
using (var webClient = new System.Net.WebClient())
{
    var imageBytes = webClient.DownloadData(iconUri);                           

    using (var bmp = SkiaSharp.SKBitmap.Decode(imageBytes))
    {
        using (var img = SkiaSharp.SKImage.FromBitmap(bmp))
        {                                    
            using (var imgData = img.Encode())
            {
                using (var ms = new System.IO.MemoryStream())
                {
                    imgData.SaveTo(ms);
                    imageBytes = ms.ToArray();
                }
            }
        }
    }    

    this.Icon = ImageSource.FromStream(() => new System.IO.MemoryStream(imageBytes));
}

注意:我打算稍后进行改进,以通过解析HTML来找到<link rel="shortcut icon"标签