我试图通过使用网站的favicon.ico文件显示与网站相关的图标。
在某些设备上这可以正常工作,但是在其他设备上,我在控制台中收到以下错误,并且图像显示为空白:
错误:找不到任何有效的嵌入式ico编解码器。
是否有一种方法可以包含其他编解码器,或者有人可以建议一种将其转换为Xamarin Forms中的PNG的方法吗?
答案 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"
标签