WinRT: извлечь значок, связанный с файлом?

Как получить изображение, связанное с определенным файлом (не миниатюрой) в приложениях WinRT?


person dschüsä    schedule 30.07.2014    source источник


Ответы (2)


Глядя на рекомендации по миниатюрам, кажется, что ThumbnailMode.Music может дать вам значок при использовании с StorageFile.GetThumbnailAsync() для большинства файлов типы - за исключением музыкальных файлов, у которых есть связанная обложка альбома, хотя я надеюсь увидеть более надежный способ получить только значок. Различные ветки форумов MSDN, кажется, указывают, что GetThumbnailAsync() - это путь.

person Filip Skakun    schedule 30.07.2014

Это решение я тоже нашел вчера. Но с 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());
  /* ... */
}

Любые другие решения без создания фиктивного файла?

person dschüsä    schedule 31.07.2014
comment
Вы также можете проверить лучший ответ на этот вопрос. Для этого требуется p/invoke для API-интерфейсов оболочки, но кто знает, может быть, это сработает? stackoverflow.com/questions/616718/ - person Filip Skakun; 31.07.2014
comment
Это будет работать только для приложений с боковой загрузкой без сертификации приложений. - person dschüsä; 04.09.2014