c# - WinRT 将 Jpg 或 PNG 转换为 GIF

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

我正在开发一个将执行一些图像处理的 WinRT 应用程序,我想做的其中一件事是将一些 jpg 或 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();
    }

较小的 jpg 似乎有效,但较大的 jpg 出现乱码。还有其他方法可以实现吗?

最佳答案

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

这似乎解决了我的问题。

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

相关文章:

image - 直方图均衡结果

php - 估计 libGD 操作所需的内存

c# - 获取 VariableSizedWrapGrid 进行虚拟化

c# - Rhino-Mocks 如何 mock ?

javascript - 在 "<%: %>"中包含一个 JS 变量

c# - 为什么我的自定义控件的文本属性不会显示在“属性”窗口中?

opencv - 如何从二进制掩码生成 trimap?

java - 在 C# 和 Java 之间传递 DateTime?

windows-8 - 我们可以从桌面应用程序和 Windows Phone 8 应用程序访问 Windows 8 WinRT API 吗?如果是,它们是否位于不同的命名空间中?

c# - 在 WebView (WinRT) 的外部浏览器中打开链接