0
C#에서 .gif 파일의 재생 시간을 어떻게 얻을 수 있습니까?cg로 .gif 파일의 재생 시간을 어떻게 구합니까?
애니메이션 gif 파일이 재생되는 동안 동작을 수행하고 싶지만 gif가 재생되는 시간을 얻는 방법을 찾을 수없는 이유가 있습니다.
C#에서 .gif 파일의 재생 시간을 어떻게 얻을 수 있습니까?cg로 .gif 파일의 재생 시간을 어떻게 구합니까?
애니메이션 gif 파일이 재생되는 동안 동작을 수행하고 싶지만 gif가 재생되는 시간을 얻는 방법을 찾을 수없는 이유가 있습니다.
는이 코드를 사용할 수 있습니다
public static class GifExtension
{
public static TimeSpan? GetGifDuration(this Image image, int fps = 60)
{
var minimumFrameDelay = (1000.0/fps);
if (!image.RawFormat.Equals(ImageFormat.Gif)) return null;
if (!ImageAnimator.CanAnimate(image)) return null;
var frameDimension = new FrameDimension(image.FrameDimensionsList[0]);
var frameCount = image.GetFrameCount(frameDimension);
var totalDuration = 0;
for (var f = 0; f < frameCount; f++)
{
var delayPropertyBytes = image.GetPropertyItem(20736).Value;
var frameDelay = BitConverter.ToInt32(delayPropertyBytes, f * 4) * 10;
// Minimum delay is 16 ms. It's 1/60 sec i.e. 60 fps
totalDuration += (frameDelay < minimumFrameDelay ? (int) minimumFrameDelay : frameDelay);
}
return TimeSpan.FromMilliseconds(totalDuration);
}
}
편집 : 당신이 확실한 경우 은, 모든 프레임이 동일한 기간을 가지고 - 당신은 단지 걸릴 첫 번째를 지연시킬 수 있습니다.
[애니메이션 GIF의 프레임 지속 시간 가져 오기] (https://stackoverflow.com/questions/3785031/getting-the-frame-duration-of-an-animated-gif)의 가능한 복제본 –