2015-02-06 84 views
0

我想獲取存儲在視頻文件夾中的文件的縮略圖,並將它們保存爲本地文件夾中的圖像。 這裏是我的代碼來獲取文件。在Windows運行時將文件縮略圖保存爲圖像

var v = await KnownFolders.VideosLibrary.GetFilesAsync(); 
foreach (var file in v) 
{ 
    var thumb = await file.GetScaledImageAsThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem); 
    BitmapImage Img = new BitmapImage(); 
    Img.SetSource(thumb); 
    await ApplicationData.Current.LocalFolder.CreateFolderAsync("VideoThumb"); 
    var imageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(
       "VideoThumb\\" + file.Name, CreationCollisionOption.FailIfExists); 
    var fs = await imageFile.OpenAsync(FileAccessMode.ReadWrite); 
    //I don't know how to save thumbnail on this file ! 
} 

我的項目是Windows Phone 8.1 Runtime C#應用程序。

回答

0

有幾件事情需要處理:

  • 你不需要的BitmapImage,爲縮略圖,只要您可以直接寫入文件流,
  • 你不處理當創建文件方法失敗時(文件存在),
  • 創建文件夾方法會在文件夾創建(或已經存在)時使用第一個文件在foreach中引發異常。而不是說,創建外的foreach /打開文件夾,
  • 還創建與file.Name形象是不是一個好主意,所以這些都是視頻及其擴展很可能會MP4/MPG /其他JPG/PNG /其他
  • 記得加的能力packageappx.manifest文件。

我認爲下面的代碼應該做的工作:

private async Task SaveViedoThumbnails() 
{ 
    IBuffer buf; 
    StorageFolder videoFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("VideoThumb", CreationCollisionOption.OpenIfExists); 
    Windows.Storage.Streams.Buffer inputBuffer = new Windows.Storage.Streams.Buffer(1024); 

    var v = await KnownFolders.VideosLibrary.GetFilesAsync(); 
    foreach (var file in v) 
    { 
     var thumb = await file.GetScaledImageAsThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem); 
     var imageFile = await videoFolder.CreateFileAsync(file.DisplayName + ".jpg", CreationCollisionOption.ReplaceExisting); 
     using (var destFileStream = await imageFile.OpenAsync(FileAccessMode.ReadWrite)) 
      while ((buf = (await thumb.ReadAsync(inputBuffer, inputBuffer.Capacity, Windows.Storage.Streams.InputStreamOptions.None))).Length > 0) 
       await destFileStream.WriteAsync(buf); 
    } 
} 
+0

感謝我在Windows運行時是新的。在此之前,我在Silverlight上工作,在這裏我不知道很多事情。非常感謝您的幫助。你能告訴我如何將這些文件轉換爲uri或位圖來顯示圖像嗎? – 2015-02-07 13:48:04

+0

@AliNGame至於Uri我建議閱讀[在MSDN](https://msdn.microsoft.com/en-us/library/windows/apps/jj655406.aspx)和[在這裏在MSDN](https:/ /msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965322.aspx)。至於從StorageFile設置圖像,你會在SO上找到一些帖子。 – Romasz 2015-02-07 13:52:38

+0

hmmmmmm謝謝;)ms-appdata:/// local/... 再次感謝。你非常幫助我 – 2015-02-07 14:07:21