Estoy tratando de crear un ImageIcon a partir de un archivo .gif animado almacenado en un archivo jar.Cargando un archivo .GIF animado del archivo JAR en ImageIcon
ImageIcon imageIcon = new ImageIcon(ImageIO.read(MyClass.class.getClassLoader().getResourceAsStream("animated.gif")));
La imagen carga, pero solo el primer fotograma del gif animado. La animación no se reproduce
Si cargo el gif animado desde un archivo en el sistema de archivos, todo funciona como se esperaba. La animación se reproduce a través de todos los cuadros. Por lo que este funciona:
ImageIcon imageIcon = new ImageIcon("/path/on/filesystem/animated.gif");
¿Cómo puedo cargar un gif animado en un ImageIcon de un archivo jar?
EDITAR: Aquí hay un caso de prueba completo, ¿por qué no muestra la animación?
import javax.imageio.ImageIO;
import javax.swing.*;
public class AnimationTest extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
AnimationTest test = new AnimationTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
});
}
public AnimationTest() {
super();
try {
JLabel label = new JLabel();
ImageIcon imageIcon = new ImageIcon(ImageIO.read(AnimationTest.class.getClassLoader().getResourceAsStream("animated.gif")));
label.setIcon(imageIcon);
imageIcon.setImageObserver(label);
add(label);
pack();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Esta es la respuesta definitiva. Gracias después de investigar este problema varias horas. Esto también resuelve el problema con la carga de recursos de Eclipse y de Maven en JAR. ¡Muchas gracias! – guerda