1

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();
    }
4

1 に答える 1

0

私もこれで悩んだことがあります。プロパティの読み取りはOKですが、フレームに任意の種類のプロパティを設定すると例外が発生するようです。ここからわかる限り、BitmapEncoders は Windows Imaging Components に関連しており、MSDN のネイティブ WIC コーデックのページに あるように、GIF のオプションはありません。奇妙に思えますが。

于 2012-11-04T22:43:12.530 に答える