C# WinRT:提取与文件关联的图标?
如何在WinRT应用程序中获取与特定文件(而非缩略图)关联的图像?查看它看起来像是C# WinRT:提取与文件关联的图标?,c#,windows-runtime,icons,thumbnails,uwp,C#,Windows Runtime,Icons,Thumbnails,Uwp,如何在WinRT应用程序中获取与特定文件(而非缩略图)关联的图像?查看它看起来像是缩略图模式。对于大多数文件类型,音乐可能会为您提供一个图标,但具有关联相册艺术的音乐文件除外,尽管我希望看到一种更强大的方式来获取图标。各种MSDN论坛线程似乎都表明,尽管GetThumbnailAsync()是一条出路。我昨天也找到了这个解决方案。但是使用ThumbnailMode.Music你会得到带有应用背景颜色的图标 最后我发现,使用ThumbnailMode.SingleItem我在没有背景的情况下获得了
缩略图模式。对于大多数文件类型,音乐
可能会为您提供一个图标,但具有关联相册艺术的音乐文件除外,尽管我希望看到一种更强大的方式来获取图标。各种MSDN论坛线程似乎都表明,尽管GetThumbnailAsync()
是一条出路。我昨天也找到了这个解决方案。但是使用ThumbnailMode.Music
你会得到带有应用背景颜色的图标
最后我发现,使用ThumbnailMode.SingleItem
我在没有背景的情况下获得了更好的结果。因此,首先创建一个具有正确文件扩展名的空文件,然后尝试获取缩略图:
string filename = "_tmp_ext" + fileextension;
Windows.Storage.StorageFile file =
await ApplicationData.Current.TemporaryFolder.CreateFileAsync(
filename, CreationCollisionOption.OpenIfExists);
FileProperties.StorageItemThumbnail thumb =
await file.GetThumbnailAsync(FileProperties.ThumbnailMode.SingleItem,
16, FileProperties.ThumbnailOptions.ResizeThumbnail);
if (thumb != null) {
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(thumb.CloneStream());
/* ... */
}
没有创建虚拟文件的任何其他解决方案?您也可以检查此问题的最佳答案。它需要对shell API进行p/invoke,但谁知道呢?也许它能工作?这将只适用于没有应用程序认证的侧面加载应用程序。