gif anime et chargement ?

Le
phil89
Bonjour

Est il possible en faisant une seule connection au serveur de charger
une Image et de savoir si c'est un GIF ANIME ?
Actuellment je suis obligé de faire 2 requetes au serveur

Pour le gif anime
ImageInputStream stream =
ImageIO.createImageInputStream(tap.openStream());
Iterator readers = ImageIO.getImageReaders(stream);
if (!readers.hasNext())
throw new RuntimeException("no image reader found");
ImageReader reader = (ImageReader) readers.next();
reader.setInput(stream); // don't omit this line!
nimg = reader.getNumImages(true); // don't use false!
stream.close();
stream=null;

Et ensuite pour charger l'image
ImageIO.read(tap)

Cela peut il etre fait avec une seule requete au serveur ?

Merci d'avance
Philippe
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Frederic Lachasse
Le #16610101
On Aug 22, 8:45 am, phil89
Bonjour

Est il possible en faisant une seule connection  au serveur de charger
une Image et de savoir si c'est un GIF ANIME ?
Actuellment je suis obligé de faire 2 requetes au serveur

Pour le gif anime
         ImageInputStream stream =
ImageIO.createImageInputStream(tap.openStream());
         Iterator readers = ImageIO.getImageReaders(stream);
         if (!readers.hasNext())
         throw new RuntimeException("no image reader found");
         ImageReader reader = (ImageReader) readers.next();
         reader.setInput(stream); // don't omit this line!
         nimg = reader.getNumImages(true); // don't use false !
         stream.close();
         stream=null;

Et ensuite pour charger l'image
ImageIO.read(tap)

Cela peut il etre fait avec une seule requete au serveur ?



Oui, bien sûr. Au moins 2 solutions possibles:

1) Faire comme suggérer dans la JavaDoc de getNumImages(): ne pas
appeler getNumImages(). A la place, appeler read() jusqu'à ce que la
méthode lève l'exception IndexOutOfBoundsException

2) Lire le GIF dans un tableau de bytes, puis utiliser un
ByteArrayInputStream pour lire et relire les mêmes données depuis la
mémoire.
Publicité
Poster une réponse
Anonyme