IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

Traitement d'image depuis une applet


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Par défaut Traitement d'image depuis une applet
    Bonjour,

    Je suis entrain de réaliser une applet qui pour but d'envoyer une capture d'écran de façon reguliere (toutes les 3/4 secondes) vers un serveur web apache.

    A ce stade, tout fonctionne.
    Néanmoins, etant bien entendu limité par les bandes passantes (en l'occurence montante) des clients web, je dois optimiser les echanges entre les clients et le serveur.

    Apres avoir tester pas mal de script sur les compressions d'images generer par le robot java, j'obtiens des captures d'ecrans allant en moyenne entre 60 et 180 Ko.

    Ma problematique est d'obtenir l'information le plus proche du temps réel tout en prenant en compte le temps de creation de l'image (1s), et de son transfert (2 à 4 s).

    Pour améliorer ces performances (et plus particulierement le temps de transfert) , je souhaiterais envoyer (sous forme d'un tableau à 2 dimensions: x, y, couleur) seulement les pixels qui ont changé depuis la derniere capture d'ecran et de changer coté serveur les pixels en php sur la dernière image uploadée (via gd, imagick, ou php-imlib).

    Je suis bien tombé sur certaines librairies telles que JMagick sans obtenir ce que je cherche.

    Avez-vous des conseils à me donner sur une eventuelle librairie Java qui pourait effectuer un tableau des pixels differents entre 2 images .

    merci.

    Guibsou.

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Par défaut
    Je viens d'effectuer quelques tests de comparaisons des pixels sur les 2 images avec script simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
                    File file1 = new File("screen11.jpg");
    		File file2 = new File("screen12.jpg");
     
    		try{
    			BufferedImage image1 = ImageIO.read(file1);
    			BufferedImage image2 = ImageIO.read(file2);
     
    			FileWriter fstream = new FileWriter("out2.txt");
    			BufferedWriter out = new BufferedWriter(fstream);
     
    			int columns = image1.getWidth();
    			int rows = image1.getHeight();
     
    			int total = columns * rows;
    			int cpt = 0;
     
    			for (int row=0; row<rows; row++){
    				for (int col=0; col<columns; col++){
    				   int rgb = image1.getRGB(col, row);
    				   int rgb2= image2.getRGB(col, row);
    				   if(rgb != rgb2 && rgb != -1){
    					    out.write(row+" "+col+" "+rgb+"\n");
    						//System.out.println(row+" "+col+" "+rgb);
    						cpt ++;
    					}
    				}
    			 }
    			 float percent = cpt * 100 / total;
    			 System.out.println(cpt+" "+total+" "+percent+" %");
    		 }catch(IOException e){}
    pour deux images de 1680x1050

    Une fois le fichier texte compressé (9 fois moins lourds), j'obtiens des resultats peu satisfaisants.

    Au dela de 6 % de changement, le fichier texte compressé devient plus lourds que l'image (sans compter les 1 à 2 secondes du traitement et le traitement coté serveur qui doit etre equivalent ). Autant dire que cette méthode ne peut etre interessante qu'en dessous de 3 % de changement de pixels entre les deux images. (comme par exemple pour un simple deplacement du curseur de la souris).

    je vais continuer de chercher.

    Je me demande par quel mecanisme VNC permet-il le rafraichissement des l'ecrans entre le client et le serveur pour avoir une telle fluidité.
    Quelqu'un connait-il son principe de fonctionnement ?

    Guibsou

  3. #3
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Par défaut
    Dans la précipitation, je n'ai pas penser à ecrire cette difference sous forme de fichier image ...

    et du coup, c'est largement mieux.

Discussions similaires

  1. [applet] créer un fichier depuis une applet.
    Par BouB dans le forum Applets
    Réponses: 12
    Dernier message: 02/04/2007, 06h45
  2. Télécharger un fichier depuis une applet
    Par doudblast dans le forum Applets
    Réponses: 4
    Dernier message: 08/03/2006, 16h17
  3. [C#] Comment inserer Image depuis une ressource ?
    Par EagleEye dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/01/2006, 13h09
  4. Rechercher une ligne vide
    Par nico-pyright(c) dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 22/12/2005, 17h10
  5. [C#] Récupération d'une image depuis une table SQL Server
    Par borgfabr dans le forum Accès aux données
    Réponses: 10
    Dernier message: 08/04/2004, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo