2012-09-23 115 views
1

我正在WinRT應用程序中創建一些動畫GIF。我已經在生成的圖像中使用多個幀進行gif轉換,但我無法弄清楚如何設置幀延遲和重複行爲。WinRT創建動畫GIF

GoToNextFrameAsync接受選項,感覺就像指定這樣的東西的正確位置,但我不知道該傳入什麼,也找不到有關該主題的任何文檔。

public async static void AnimateImages(IEnumerable<StorageFile> files) 
    { 
     var outFile = await KnownFolders.PicturesLibrary.CreateFileAsync("test.gif", CreationCollisionOption.ReplaceExisting); 
     var outStream = await outFile.OpenAsync(FileAccessMode.ReadWrite); 

     var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.GifEncoderId, outStream); 


     for (int i = 0; i < files.Count(); i++) 
     { 
      using (var str = await files.ElementAt(i).OpenAsync(FileAccessMode.Read)) 
      { 
       var decoder = await BitmapDecoder.CreateAsync(str); 
       var pixels = await decoder.GetPixelDataAsync(); 

       encoder.SetPixelData(decoder.BitmapPixelFormat, BitmapAlphaMode.Ignore, 
        decoder.OrientedPixelWidth, decoder.OrientedPixelHeight, 
        decoder.DpiX, decoder.DpiY, 
        pixels.DetachPixelData()); 

       if(i < files.Count() -1) 
        await encoder.GoToNextFrameAsync(); 
      } 
     } 

     await encoder.FlushAsync(); 
     outStream.Dispose(); 
    } 

回答

0

我也一直有這個問題。看起來雖然閱讀屬性是可以的,但設置框架上的任何屬性都會導致異常。據我所知,here BitmapEncoders與Windows映像組件相關,並且在Native WIC Codecs on MSDN的頁面中指出,GIF沒有選項。這看起來很奇怪。