我正在开发一个 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 似乎可以工作,但较大的 jpg 会出现困惑。有没有另一种方法来实现这一目标?

最佳答案

呃,问题是我使用的是 PixelWidth/Height 而我应该一直使用 OrientedPixelWidth/Height。

这似乎解决了我的问题。

关于c# - WinRT 将 Jpg 或 PNG 转换为 GIF,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12555537/

10-13 03:32