Laden...

Animiertes GIF nur einmal abspielen lassen ?!

Erstellt von RiDDem vor 14 Jahren Letzter Beitrag vor 10 Monaten 4.977 Views
R
RiDDem Themenstarter:in
7 Beiträge seit 2006
vor 14 Jahren
Animiertes GIF nur einmal abspielen lassen ?!

Hallo,

ich möchte ein animiertes GIF einmalig abspielen lassen, sodass das Endbild der Animation stehen bleibt.

Das Problem:

Das GIF-Bild wird bei abspielen im Internet Explorer und beim normalen öffnen in Windows auch nur einmalig abgespielt; sobald ich es jedoch in einer pictureBox lade und das Projekt kompiliere fängt die Animation immer wieder von vorne an ?!

Hat jemand eine Idee zur Lösung des Problems?

Vielen Dank im Voraus,
Riddem

270 Beiträge seit 2005
vor 14 Jahren

Hallo RiDDem,

habe zwar keine direkte Lösung für dich aber ich bin heute zufällig über dieses Programm gestossen:

http://stevedunns.googlepages.com/convertanimatedgifstospritemaps

Hier liegt der Quellcode ja vor und das Programm muss die Bilder ja auch nur einmal verarbeiten/abspielen daher könnte dir das evtl. helfen.

mfg Hulk

M
5 Beiträge seit 2008
vor 14 Jahren

Evt. kannst du das Problem auch umgehen, wenn du die komplette Ablaufzeit der Gif-Animation erfasst und vom letzten Bild der Animation ein Einzelbild erstellst (über ein prof. Zeichenprogramm, oder Desktop-Screenshot).

In der Programmierung lässt du die Gif-Animation in der Picture-Box über die Zeit, welche eine vollständige Abfolge benötigt, laufen (Timer). Im Abschluss ersetzt du das Ani-Gif durch das jetzte Einzelbild.

Gruß
Martin

T
86 Beiträge seit 2017
vor 3 Jahren

Es ist schon etwas her 😦

Habe für Dein Problem dies im Netz gefunden:



using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Collections.Generic;
using System.IO;

public class AnimatedGif {
  private List<AnimatedGifFrame> mImages = new List<AnimatedGifFrame>();
  PropertyItem mTimes;
  public AnimatedGif(string path) {
    Image img = Image.FromFile(path);
    int frames = img.GetFrameCount(FrameDimension.Time);
    if (frames <= 1) throw new ArgumentException("Image not animated");
    byte[] times = img.GetPropertyItem(0x5100).Value;
    int frame = 0;
    for (; ; ) {
      int dur = BitConverter.ToInt32(times, 4 * frame);
      mImages.Add(new AnimatedGifFrame(new Bitmap(img), dur));
      if (++frame >= frames) break;
      img.SelectActiveFrame(FrameDimension.Time, frame);
    }
    img.Dispose();
  }
  public List<AnimatedGifFrame> Images { get { return mImages; } }
}

public class AnimatedGifFrame {
  private int mDuration;
  private Image mImage;
  internal AnimatedGifFrame(Image img, int duration) {
    mImage = img; mDuration = duration;
  }
  public Image Image { get { return mImage; } }
  public int Duration { get { return mDuration; } }
}


Vielleicht ist das auch was für andere die sowas suchen

Lieben Gruß
TigerCrow

S
1 Beiträge seit 2023
vor 10 Monaten

Ein paar Jährchen sind seit der Frage vergangen - inzwischen gibt es jede Menge kostenlose Formatwandler.

Das einfachste Mittel ist, aus dem GIF eine MP4 zu machen. Die lässt sich problemlos auch nur einmalig abspielen.