Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

gif anime et chargement ?

1 réponse
Avatar
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=E9 de faire 2 requetes au serveur

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

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

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

Merci d'avance
Philippe

1 réponse

Avatar
Frederic Lachasse
On Aug 22, 8:45 am, phil89 wrote:
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.