# Animiertes Gif als BufferedImage



## Fitmann (23. Apr 2007)

Hallo zusammen,

Ich hab da mal ein problem,
ich habe ein animiertes gif in ein bufferedImage geladen und zeichne dieses in ein Jpanel, das funzt auch soweit alles ganz gut, allerdings bewegt sich das gif nicht mehr, vorher habe ich mit images gearbeitet da ging es, liegt das jetz am bufferedimage oder gibts da nen trick?


----------



## thE_29 (23. Apr 2007)

Wie liest du den das BufferedImage ein? Und wie legst du es wo rauf?


----------



## Fitmann (23. Apr 2007)

```
private int action=0;
private BufferedImage[] images = new BufferedImage[17];
private BufferedImage tmpImage = null;

void loadImage(String path) {
		BufferedImage tmpImage = null;
		 try {
		 tmpImage = ImageIO.read(new File(path));
		} catch (IOException e) {
			e.printStackTrace();
		 }

		images[action] = tmpImage;
		tmpImage = null;
}

Image getImage() {
		return images[action];
	}
```

dann speicher ich das gif in nem arry... das findet in der klasse ELogik statt

danch zeichne ich es auf ein JFrame in der klase EGui


```
public void paint(Graphics g) {
		super.paint(g);
		if (logik.getImage() != null)
			 g.drawImage(logik.getImage(), 50, 100, this);
	}
```


----------



## thE_29 (23. Apr 2007)

und wenn du das Image so lädst:

new ImageIcon("PFAD/ZUR/DATEI").getImage()

Geht es vielleicht dann? (das images Array wäre dann natürlich ein Image[] array und kein BufferedImage array!)


----------



## Fitmann (23. Apr 2007)

jagut ich hab das bild vorher so geladen: 

```
Image tmpImage=Toolkit.getDefaultToolkit.getImage(path);
```

aber ich will im endeffeckt diesen array als teil eines neuen objecktes namen Elemnt mit samt den reingeladenen bildern als externe datei speichen, so das ich garkeine gifs mehr im ordner habe, [ich arbeite da grade an nem 2d jump and run]... das sollen quasi meine figuren werden.[/code]


----------



## Fitmann (23. Apr 2007)

hat sich erledigt.... ich hab jetz imageicon genommen, da bufferedimage eh nicht serialisierbar ist.


----------



## Guest (3. Aug 2007)

Hi,

ich habe mir den Code mal ein wenig genommen und verändert.

Es klappt auch wenn ich die java Dateien direkt verwende, aber irgendwie als JAR Datei nicht.
Dachte das ich über das getResource() behben könnte, aber irgendwie findet die JAR scheinbar immernoch keine Bilder.

Jemand ne Idee woran es liegen könnte:


```
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;


public class Gif extends JFrame{
	static final long serialVersionUID = 1L;
	private Image tmpImage;

	public Gif(){
		super("Test");
		setSize(500,500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		loadImage();
		this.repaint();
	}
	
	void loadImage() {
		
       tmpImage = Toolkit.getDefaultToolkit().getImage(getClass().getResource("orc4.gif"));
	} 
	
	public void paint(Graphics g) {
	      super.paint(g);
	      g.drawImage(tmpImage, 24, 24, this);
	      g.drawImage(tmpImage, 48, 24, this);
	      g.drawImage(tmpImage, 72, 24, this);
	      g.drawImage(tmpImage, 96, 24, this);
    } 
}
```


----------



## Quaxli (3. Aug 2007)

Animierte Gif's darzustellen ist grundsätzlich problematisch. Ich würde die Einzelbilder speichern und die Animation selbst erzeugen.


----------



## Guest (4. Aug 2007)

Muss sagen ich war überrascht, klappt mit dem Code ohne Probleme.
ok ist nur ein kleines gif, sprich was aus zwei Bildern besteht, aber geht.


```
JLabel tmp = new JLabel(new ImageIcon(getClass().getResource("/orc4.gif")));
```


----------



## coalado (13. Aug 2007)

@Quaxli kannst du mir zufällig sagen wie man die Einzelbilder extrahieren kann?

Tom


----------



## Quaxli (13. Aug 2007)

Mit einem geeignetem Grafikprogramm, z. B. GIMP


----------

