我正在开发一个WinRT应用程序,将进行一些图像处理,其中我想做的事情之一是将一些jpg或png转换为gif。我有一些基本能够工作的代码。对于我的一些测试jpg,它可以正常工作,但对于另一些则输出了混乱的图像。我想知道是否有什么我忽略的东西。以下是我目前的代码:
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();
}
较小的JPG图像似乎可以正常工作,但较大的图像会出现混乱。是否有其他方法可以实现此目的?