WinRT将Jpg或PNG转换为GIF

时间:2012-09-23 19:27:05

标签: c# image-processing microsoft-metro windows-runtime gif

我正在开发一个WinRT应用程序,它将进行一些图像处理,我想要做的一件事就是将一些jpgs或png转换为gif。我有一些有用的东西。对于我的一些测试jpgs,它适用于其他人,它是一个获得输出的混乱图像。只是想知道是否有我遗失的东西。这是我到目前为止所拥有的

    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出现了问题。还有另一种方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:4)

Duh,问题是我使用的是PixelWidth / Height,而且我一直在使用OrientedPixelWidth / Height。

这似乎解决了我的问题。