2012-09-23 159 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

感谢您与我们分享队友的! –