WinRT如何将JPG或PNG转换为GIF?

4

我正在开发一个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图像似乎可以正常工作,但较大的图像会出现混乱。是否有其他方法可以实现此目的?
1个回答

4

噢,问题在于我使用了PixelWidth/Height而应该使用OrientedPixelWidth/Height。

这似乎已经解决了我的问题。


1
谢谢你与我们分享这个伙计! - Simon Mattes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接