2012-09-23 17 views
4

Я работаю над приложением WinRT, которое будет выполнять некоторую обработку изображений, и одна из вещей, которую я хочу сделать, - это конвертировать jpg или png в gif. У меня есть что-то такое. Для некоторых моих тестовых jpgs он работает другими, это скремблированное изображение, которое выводит результат. Просто интересно, есть ли что-то, чего я не видел. Вот то, что я до сих пор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, кажется, работают, но более крупные из них вышли перемешаны. Есть ли другой способ достичь этого?

ответ

4

Duh, проблема была в том, что я использовал PixelWidth/Height, а я sholud использовал OrientedPixelWidth/Height.

Это, похоже, разрешило мою проблему для этого.

+1

Спасибо, что поделились этим с нами! –

Смежные вопросы