Forum Programmation.java afficher une série de photos chargées à partir d'une url

Posté par  .
Étiquettes : aucune
0
11
nov.
2005
Salut

J'ai écrit une applet qui affiche 15 images les unes à la suite des autres ttes les 400 millisecondes ( ce qui donne l'illusion d'un petit film).
Cette applet fonctionne trés bien qd je le teste sur mon réseau local, mais pas sur le web . Je ne vois pas ce qui cloche.
J'ai apache sur mon ordi, on peut consulter sans pb les pages que j'héberge. Le pb ne vient pas de là. Voici mon scripts:

import java.net.*;
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.lang.*;

public class Labo3 extends Applet implements Runnable {
Image image;
//le thread pour rafraichir l'image
private Thread film;
//vitesse de rafraichissement (en ms)
int speed=400;
//i sert à l'indexation de mes images
private int i=1;
//l'url de mon ordi
URL url;

public void init(){
//on donne l'url de l'ordi (soit 192.168.0.2 qd je teste en local, et dans ce cas tout est ok, soit l'adresse IP de l'ordi qd je vais tester d'un cyber café, et la rien ne marche : un rectangle gris)
try {url=new URL("http://81.241.102.102:80/");} catch (MalformedURLException e){};
//on renseigne l'endroit de l'image
image=getImage(url,"essai"+i+".jpeg?"+(new Date().getTime()));
repaint();
}

public void start() {
//démarrage du film au début de l'applet
if (film==null) {
film=new Thread(this);
film.start();
}
}

public void run() {
while (film!=null) {
image=getImage(url,"essai"+i+".jpeg?"+(new Date().getTime()));
repaint();
i++;
if ( i==16) i=1;
try {
film.sleep(speed);
} catch (InterruptedException e) {}
}
}

public void stop() {
film.stop();
film=null;
}

public void paint (Graphics g) {
g.drawImage(image,0,0,this);
}

public void update (Graphics g){
paint(g);}
}


Bon, voilà.
Si qqu'un a le courage de lire ce script et de me donner des pistes, je suis preneur.
Je ne m'explique pas pourquoi ça marche très bien en local ( je le teste d'un autre ordi de mon réseau ), et pas du tout sur le web

PS: les photos sont légères : 7 ko et mon parfeu est désactivé

Merci
  • # Re:afficher une série de photos chargées à partir d'une url

    Posté par  . Évalué à 1.

    Salut,

    Le premier reflexe serait de savoir si ton applet est correctement chargée depuis le serveur. C'est en effet étrange de spécifier une adresse IP plutôt qu'une adresse web.
  • # getImage() est assynchrone

    Posté par  (site web personnel) . Évalué à 1.

    Euh... Tu dis que ça ne marche pas, mais que ce passe-t-il exactement ?

    Sinon voici la doc de la méthode getImage de Applet :

    This method always returns immediately, whether or not the image exists. When this applet attempts to draw the image on the screen, the data will be loaded. The graphics primitives that draw the image will incrementally paint on the screen.

    Un appel à getImage() provoque le chargement assynchrone de l'image. Donc au retour de la méthode, l'image n'est pas nécessairement chargée, et donc ne peut pas être affichée. Sur le réseau local il est possible que cela ne se voit pas mais sur Internet c'est une autre histoire.

    Mon conseil : tu devrais prévoir un cache pour tes images. Et aussi Applet implémente l'interface ImageObserver qui sert justement à savoir quand une image est prête à être affichée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.