7

GIF アニメーションの継続時間 (再生時間) を取得するにはどうすればよいですか?

これが私のコードです:

GifTime = PoczatkowyGIF.GetFrameCount(FrameDimension.Time); 
//GifTime is a double; PoczatkowyGIF is my gif image.

GifTime正確ではありません。私のアニメーションは 3.8 秒ですが、GifTime3.9 秒です。私が試した別のアニメーションは 0.88 秒でしたGifTimeが、0 でした。どうすればアニメーション時間を取得できますか? また、GIF の最初のフレーム時間を編集し、指定した時間のフレームを既存の GIF に追加するにはどうすればよいですか?

4

2 に答える 2

5

次のスニペットでは、各フレームの継続時間を累積して、合計継続時間を計算する方法を確認できます。

for (int f = 0; f < frameCount; f++)
{
  this_delay = BitConverter.ToInt32(image.GetPropertyItem(20736).Value, index) * 10;
  // Minimum delay is 100 ms
  delay += (this_delay < 100 ? 100 : this_delay);  
  index += 4;
}

フレームの継続時間を 100 ミリ秒より短くすることはできないことに注意してください。これにより、計算の違いが生じる可能性があります。

残りのコードについては、.GIF の調査に関するこの記事を参照してください。

また、アニメーション画像の最後のフレームを編集するには、次を使用できます

gifImage.SelectActiveFrame(dimension, first_frame_index);

SelectActiveFrame指定された(あなたの場合は最初の)フレームを変更して、画像を編集できます。

これについては完全にはわかりませんが、フレームワークはフレームの追加をサポートしていません。MagickNetを使用して、この目的のために新しい GIF を再エンコードしました。代わりにNGifを検討することもできます。

于 2013-01-08T16:16:19.390 に答える