2012-09-23 218 views
4

我工作的一個WinRT的應用程序,它會做一些圖像處理和我想要做的事情之一是一些JPG格式或PNG轉換成GIF。我有這樣的作品。對於我的一些測試的JPG文件的工作原理別人這是一個失真的圖像是獲得的輸出。只是想知道是否有一些我錯過了。這是我到目前爲止WinRT的轉換JPG或PNG爲GIF

public async static void ConvertToGif(IRandomAccessStream stream) 
    { 
     var decoder = await BitmapDecoder.CreateAsync(stream); 
     var pixels = await decoder.GetPixelDataAsync(); 

     var file = await KnownFolders.PicturesLibrary.CreateFileAsync("test.gif", CreationCollisionOption.ReplaceExisting); 
     var outStream = await file.OpenAsync(FileAccessMode.ReadWrite); 

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

     encoder.SetPixelData(decoder.BitmapPixelFormat, BitmapAlphaMode.Ignore, 
      decoder.PixelWidth, decoder.PixelHeight, 
      decoder.DpiX, decoder.DpiY, 
      pixels.DetachPixelData()); 

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

較小的jpgs似乎工作,但較大的jpgs出來炒。是否有另一種方法來實現這一目標?

回答

4

咄,問題是,我是用PixelWidth /身高和我sholud一直在使用OrientedPixelWidth /高度。

這似乎已經解決了我的問題這一點。

+1

感謝您與我們分享隊友的! –