Wszystkie znalezione kody dają ten sam wynik: kilka dokładnie wyglądających klatek. Znaczenie: daje mi listę pierwszej klatki, powtarzaną X razy. Używany przeze mnie .gif ma 30 klatek, więc otrzymuję 30 razy pierwszą klatkę zamiast 30 różnych klatek.Jak podzielić .gif w ramkach?
public static Image[] GetFramesFromAnimatedGIF(Image IMG)
{
List<Image> IMGs = new List<Image>();
int Length = IMG.GetFrameCount(FrameDimension.Time);
for (int i = 0; i < Length; i++)
{
IMG.SelectActiveFrame(FrameDimension.Time, i);
IMGs.Add(IMG);
}
return IMGs.ToArray();
}
Czego mi brakuje? WSZYSTKIE kody, które oglądałem, dają pierwszą klatkę powtarzaną X razy.
To właśnie powinno wyglądać (za pomocą strony internetowej). Zobacz, jak każda klatka jest inna?
To co wygląda dla mnie po zapisaniu każdej ramki wewnątrz tej tablicy na lokalizacji folderu (pęczek równych klatek):
PS: Tak, to jest .gif obraz, którego używam.
Aktualizacja: Problem wydaje się być, gdy czytam plik w OpenFileDialog, ponieważ działa, jeśli przekazuję mój .gif przez kod. Więc jak mogę przeczytać animowany gif w OpenFileDialong? Dziękuję Ci.
Może to być pomocne: http://stackoverflow.com/questions/951786/wpf-how-to-extract-frames-from-multiframe-images-tif-gif?rq = 1 – aisa
@aisa Dziękuję, ale teraz okazało się, że jeśli przekażę mój .gif przez kod to działa. Tak więc problem występuje w OpenFileDialog, ponieważ czyta mój animowany .gif jako prosty .gif. – soulblazer
Czy próbowałeś użyć ['GifBitmapEncoder'] (https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.gifbitmapencoder%28v=vs.90%29.aspx) z WPF? – dbc