我试图通过使用favicon.ico文件显示与网站相关的图标。
在某些设备上,这工作正常,但在其他设备上我在控制台中出现以下错误,图像显示为空白:
错误:找不到任何有效的嵌入式ico编解码器。
有没有办法包含额外的编解码器或任何人都可以建议一种转换方式这是Xamarin Forms中的PNG?
找到了一个名为SkiaSharp的有用图像API,用于在Xamarin Forms中转换.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"
标签来获取favicon