Lire toutes les images d'un gif animé

Contenu du snippet

Une petite source montrant comment lire toutes les images d'un gif animé...

(je sais pas si ça deja été posté... pourtant j'ai cherché! désolé aux admins sinon... :)

Source / Exemple :


/**

  • lit les images d'un gif animé
@param f l'image gif @return le tableau d'images ou null si erreur
  • /
public static BufferedImage[] readGifImages(String f) { BufferedInputStream in=null; //stream image ImageInputStream stream = null; try { in=new BufferedInputStream(new FileInputStream(new File(f))); stream = ImageIO.createImageInputStream(in); } catch (IOException e) { return null; } //reader d'image ImageReader r=getReader("GIF"); if (r==null) return null; //tableau dynamique des images lues ArrayList<BufferedImage> img=new ArrayList<BufferedImage>(); try{ r.setInput(stream,true,true); ImageReadParam param = r.getDefaultReadParam(); //lecture des images try{ int i=0; //on lit tant qu'il y a pas d'exceptions ! while(true) { //lecture et ajout img.add(r.read(i,param)); i++; } }catch(Exception e2) {} r.dispose(); in.close(); }catch(Exception e) { return null; } //retourne un tableau return img.toArray(new BufferedImage[img.size()]); } /**
  • donne le reader correspondant au format
@param format le format désiré (voir ImageIO.write) @return le reader correspondant ou null si erreur
  • /
private static ImageReader getReader(String format) { Iterator readers = ImageIO.getImageReadersBySuffix(format); if (readers.hasNext()) { ImageReader reader = (ImageReader) readers.next(); return reader; } return null; }

Conclusion :


Ne pas oublier les import :

import java.io.*;
import javax.swing.*;
import javax.imageio.*;
import javax.imageio.stream.*;
import java.util.*;
import java.awt.image.*;

Pour charger une image gif, suffit d'executer par exemple readGifImages("chat.gif") pour avoir toutes les images du gif animé chat.gif

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.