UWP中GetThumbnailAsync获取缩略图结果不一致问题求助
问题解决:GetFilesAsync获取的文件无法生成正确缩略图
问题原因
使用CommonFileQuery.OrderByDate进行深度文件夹查询时,系统返回的StorageFile对象依赖系统搜索索引,而索引并未预先加载缩略图所需的完整元数据;而文件选择器返回的文件是用户直接选定的,系统会自动加载更全的文件元数据,因此能正常生成缩略图。
解决方案
方案1:查询时预取缩略图数据
在创建QueryOptions后,添加缩略图预取配置,让系统在查询文件的同时就获取缩略图数据:
var queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter); queryOptions.FolderDepth = FolderDepth.Deep; // 添加这行代码,预取指定尺寸和模式的缩略图 queryOptions.SetThumbnailPrefetch(ThumbnailMode.SingleItem, (uint)requestedSize, ThumbnailOptions.UseCurrentScale); var cacheFolder = KnownFolders.PicturesLibrary; var result = cacheFolder.CreateFileQueryWithOptions(queryOptions); var files = await result.GetFilesAsync();
之后再调用GetThumbnailAsync就能直接拿到正确的缩略图。
方案2:使用FileInformation获取缩略图
如果不想修改查询配置,也可以通过FileInformation来获取缩略图,它会直接从文件本身读取元数据,不依赖索引:
// 替换原来的GetThumbnailAsync调用 var fileInfo = await FileInformation.CreateFromFileAsync(imageFile); var thumbnail = await fileInfo.GetThumbnailAsync(ThumbnailMode.SingleItem, (uint)requestedSize, ThumbnailOptions.UseCurrentScale);
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

