Como animo a imagem gif com o bufeeredimage

galera usando imagem gif icon numa jg label ela anima , mas por q nao anima no bufered image
public CartasGraficos() {

	try {
		carta1=ImageIO.read(getClass().getResource("/traz.jpg"));
		carta2=ImageIO.read(getClass().getResource("/c1.gif"));
	} catch (IOException e) {
		
		e.printStackTrace();
	}
	cartas();
}

public void cartas() {
if(random==1) {
	cartaIndice =carta1;
}
else if(random==2)
	cartaIndice =carta2;
}

public void render(Graphics g) {
	g.drawImage(cartaIndice, posi_x, posi_y, width, height, null);
}

}

Dando uma pesquisada rápida, parece que o problema pode estar no ImageIO , sendo uma alternativa usar o ImageIcon (e URL). Algo como:

Image icon = new ImageIcon(new URL("carta.gif")).getImage();

// mais pra frente
g.drawImage(icon, posi_x, posi_y, this);

Mas não rodei aqui para ter certeza. Na minha experiência, o suporte a gif sempre foi meio precário no Java Swing.

Referência: image - How to draw a gif animation in java? - Stack Overflow

Obs: se você não está usando animações gif (são imagens estáticas), use outros formatos de imagem, como png e jpeg. Muito melhores de trabalhar que o gif.

Abraço.

1 curtida

Tá vendo esse último parâmetro que você está passando null?
Nele você deveria passar um ImageObserver que será notificado quando o próximo frame do GIF está pronto para ser desenhado.

3 curtidas

eu consegui ^^, não sei mas acho que guifs devem pesar bastante mas e só um estudo q to fazendo. kkkkk ja to dominando java kkk mentira mas ja to entendendo um bocado de coisa legal, graças a vcs. tenho outra duvida vou postar em outro tópico…