Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2557 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  récupérer une image sur un socket et l'afficher en plein écran

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupérer une image sur un socket et l'afficher en plein écran

n°2141152
snafu8
Posté le 07-05-2012 à 11:22:35  profilanswer
 

Salut à tous,
 
je commence par préciser que je ne suis PAS en train de faire mes devoirs.
 
Je dois écrire un programme qui ouvre un socket TCP sur un port fixé, récupère une image par ce socket et l'affiche en plein écran sur l'écran secondaire d'une machine. Je suis très loin d'être un expert en IHM (et en java d'ailleurs). Pour l'instant j'ai un bout de code qui me permet d'ouvrir le socket et de récupérer l'image :  
 

Code :
  1. public class test {
  2.     public static void main(String[] args) {
  3.  int listenPort = 25001;
  4.  try {
  5.   ServerSocket socket= new ServerSocket(listenPort);
  6.   Socket clientSocket = null;
  7.   while(true){
  8.      clientSocket = socket.accept();
  9.   InputStream input = clientSocket.getInputStream();
  10.   BufferedInputStream input_r = new BufferedInputStream(input);
  11.   byte[] message= new byte[5];
  12.   byte[] width_b = new byte[4];
  13.   byte[] length_b = new byte[4];
  14.   input.read(message,0,5);
  15.   input.read(length_b,0,4);
  16.   input.read(width_b,0,4);
  17.   int width = ByteBuffer.wrap(width_b).getInt();
  18.   int length = ByteBuffer.wrap(length_b).getInt();
  19.   String s = new String(message);
  20.   System.out.println("Message:" + s + " width:" + width + " length:" + length);
  21.   byte[][] data = new byte[length][width];
  22.   for(int i=0;i<length;i++){
  23.    input.read(data[i],0,width);
  24.   }
  25.   }
  26.  }
  27.  catch (IOException e) {
  28.      System.out.println("Accept failed: 4444" );
  29.      System.exit(-1);
  30.  }
  31. }
  32. }


 
et j'ai récupéré sur l'interweb un snippet qui fait la deuxième partie :  
 

Code :
  1. public class fullscreen extends JFrame {
  2.     // this line is needed to avoid serialization warnings   
  3.     private static final long serialVersionUID = 1L;
  4.     Image screenImage; // downloaded image   
  5.     int w, h; // Display height and width  
  6.     // Program entry  
  7.     public static void main(String[] args) throws Exception {
  8.         if (args.length < 1) // by default program will load AnyExample logo  
  9.             new fullscreen("http://www.anyexample.com/i/logo.gif" );
  10.         else
  11.             new fullscreen(args[0]); // or first command-line argument  
  12.     }
  13.     // Class constructor   
  14.     fullscreen(String source) throws MalformedURLException {
  15.         // Exiting program on window close  
  16.         addWindowListener(new WindowAdapter() {
  17.             public void windowClosing(WindowEvent e) {
  18.                 System.exit(0);
  19.             }
  20.         });
  21.         // Exitig program on mouse click  
  22.         addMouseListener(new MouseListener() {
  23.             public void mouseClicked(MouseEvent e) { System.exit(0); }
  24.             public void mousePressed(MouseEvent e) {}
  25.             public void mouseReleased(MouseEvent e) {}
  26.             public void mouseEntered(MouseEvent e) {}
  27.             public void mouseExited(MouseEvent e) {}
  28.         }
  29.         );
  30.         // remove window frame   
  31.         this.setUndecorated(true);
  32.         // window should be visible  
  33.         this.setVisible(true);
  34.         // switching to fullscreen mode  
  35.         GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  36.    GraphicsDevice[] gs = ge.getScreenDevices();
  37.         gs[gs.length-1].setFullScreenWindow(this);
  38.         // getting display resolution: width and height  
  39.         w = this.getWidth();
  40.         h = this.getHeight();
  41.         System.out.println("Display resolution: " + String.valueOf(w) + "x" + String.valueOf(h));
  42.         // loading image   
  43.         if (source.startsWith("http://" )) // http:// URL was specified  
  44.             screenImage = Toolkit.getDefaultToolkit().getImage(new URL(source));
  45.         else
  46.             screenImage = Toolkit.getDefaultToolkit().getImage(source); // otherwise - file  
  47.     }
  48.     public void paint (Graphics g) {
  49.         if (screenImage != null) // if screenImage is not null (image loaded and ready)  
  50.             g.drawImage(screenImage, // draw it   
  51.                         w/2 - screenImage.getWidth(this) / 2, // at the center   
  52.                         h/2 - screenImage.getHeight(this) / 2, // of screen  
  53.                         this);
  54.             // to draw image at the center of screen  
  55.             // we calculate X position as a half of screen width minus half of image width  
  56.             // Y position as a half of screen height minus half of image height  
  57.     }
  58. }


 
Ma question est assez simple, comme je peux fusionner les deux?

mood
Publicité
Posté le 07-05-2012 à 11:22:35  profilanswer
 

n°2141869
snafu8
Posté le 10-05-2012 à 20:27:08  profilanswer
 

sur les 76 qui ont vu le post, personne a aucune idée?

n°2143311
willy le k​id
Posté le 22-05-2012 à 14:45:48  profilanswer
 

Je mettrai le contenu du main de la classe test dans une méthode ImageUtils.provide() et renvoyant l'InputStream input.
 
Je modifierai la signature de fullscreen(String source) en fullscreen(InputStream input) et en modifiant le code avec
screenImage = javax.imageio.ImageIO(input);
 
Ensuite tu fais un programme principal qui dans le main fait un "new fullscreen(ImageUtils.provide);"
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  récupérer une image sur un socket et l'afficher en plein écran

 

Sujets relatifs
afficher une ligne à la foisRécupérer adresse ip locale en Javascript ?
[Batch] recuperer ping dans fichier txtRedimentionnement d'image en fonction de la fenêtre
Générer une image à partir d'un fichier htmlrécupérer le nom d'un fichier ouvert par Scilab et fonction uigetfile
Besoin d'aide, blog multiple-imagel'écran splash de démarrage Ipad impossible sous wordpress
[Batch Dos ou Powershell ]Récupérer un dossier FTP puis le purger?Organisation de tout plein de données
Plus de sujets relatifs à : récupérer une image sur un socket et l'afficher en plein écran


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR