【问题标题】:WinRT create animated GIFWinRT 创建动画 GIF
【发布时间】:2012-11-05 06:43:12
【问题描述】:

我正致力于在 WinRT 应用中创建一些动画 GIF。我已经在生成的图像中使用多个帧进行 gif 转换,但我无法弄清楚如何设置帧延迟和重复行为等内容。

GoToNextFrameAsync 接受的选项感觉像是指定此类内容的正确位置,但我不知道要传递什么,也找不到有关该主题的任何文档。

    public async static void AnimateImages(IEnumerable<StorageFile> files)
    {
        var outFile = await KnownFolders.PicturesLibrary.CreateFileAsync("test.gif", CreationCollisionOption.ReplaceExisting);
        var outStream = await outFile.OpenAsync(FileAccessMode.ReadWrite);

        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.GifEncoderId, outStream);


        for (int i = 0; i < files.Count(); i++)
        {
            using (var str = await files.ElementAt(i).OpenAsync(FileAccessMode.Read))
            {
                var decoder = await BitmapDecoder.CreateAsync(str);
                var pixels = await decoder.GetPixelDataAsync();

                encoder.SetPixelData(decoder.BitmapPixelFormat, BitmapAlphaMode.Ignore,
                    decoder.OrientedPixelWidth, decoder.OrientedPixelHeight,
                    decoder.DpiX, decoder.DpiY,
                    pixels.DetachPixelData());

                if(i < files.Count() -1 )
                    await encoder.GoToNextFrameAsync();
            }
        }

        await encoder.FlushAsync();
        outStream.Dispose();
    }

【问题讨论】:

    标签: c# image-processing windows-runtime


    【解决方案1】:

    我也遇到了这个问题。似乎虽然可以读取属性,但在框架上设置任何类型的属性都会导致异常。据我从here 得知,BitmapEncoders 与 Windows 图像组件相关,并且正如Native WIC Codecs on MSDN 的页面所述,没有 GIF 选项。不过看起来确实很奇怪。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2012-06-25
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多