Enviar imagem via socket colocar ela num JLabel

5 respostas
AndreSI

Olá pessoal, gostaria de saber como enviar imagens pelo socket e que essa imagem seja exibida num JLabel. Na verdade são várias imagens que são capturadas por um robot dentro de um Time(50,new ActionListener(){}) e enviadas pra outro computador pra aparecer no JLabel ou me dÊ outra sugestão melhor. Falô!!!1

5 Respostas

A

Ixi socket, estou tentando enviar uma mensagem de um sistema para o outro usando socket e ainda não consegui.
E como não sei na pratica essas comunicação, não poderei te ajudar muito.
Mais se ideia ajudar…, já tentou usar Web service? eu ainda não usei mais já fui indicado a usar, talvez nesse seu caso te ajude.

nebster

vc precisa converter ela em blob e depois enviar o blob por socket.

conselho: vai ficar lerdo pra caramba…

V

procure ver sobre a classe ImageIO do java, ela pode ler uma imagem vindo de um Stream então isso pode ajudar um pouco você já que virá vira soket xD

AndreSI

Essa é a classe cliente

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package assistence;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.swing.Timer;


/**
 *
 * @author USUARIO
 */
public class Cliente {
    private Robot robot;
    
    private Timer timer;

    public Cliente() throws AWTException, UnknownHostException, IOException {
         robot = new Robot();
       
        timer = new Timer(150, new Aa());
        timer.start();
      
        
        
    }
    
    
    //JLabel lab = new JanelaSe

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws AWTException, UnknownHostException, IOException {
        Cliente cliente = new Cliente();
        
        
    }
    
    
}
 class Aa implements ActionListener{
     Socket cliente = null;
            OutputStream outi = null;
             private Robot robot;
             BufferedImage image;

    public Aa() throws AWTException, UnknownHostException, IOException {
        robot = new Robot();
         cliente = new Socket("127.0.0.1",12345);
        outi = cliente.getOutputStream();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        try {    
                image = robot.createScreenCapture(new Rectangle(0,0, 800, 800));  
                
                
                ImageIO.write(image, "gif", outi);
                
            
                if(!cliente.isOutputShutdown())
                    System.exit(0);
                    
                } catch (UnknownHostException ex) {
                    Logger.getLogger(JanelaCliente.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(JanelaCliente.class.getName()).log(Level.SEVERE, null, ex);
                }
        
    }
}
e essa é a servidor
timer = new Timer(50, new ActionListener() {
            
            ServerSocket servidor = new ServerSocket(12345);
            Socket cliente = servidor.accept();
           // Image im = null;
            //BufferedImage image = null;
            InputStream ima = cliente.getInputStream();
            
            @Override
            public void actionPerformed(ActionEvent e) {                 
                try {                
                     
                    im = ImageIO.read(ima).getScaledInstance( 800, 800, Image.SCALE_SMOOTH);
                    
                    
                    
                    
                    tela.setIcon(new ImageIcon(im));   
                   
                    System.out.println("oioioi");
                    
                } catch (IOException ex) {
                    Logger.getLogger(JanelaServer.class.getName()).log(Level.SEVERE, null, ex);
                }
                    
            }
        });
AndreSI

alextr:
Ixi socket, estou tentando enviar uma mensagem de um sistema para o outro usando socket e ainda não consegui.
E como não sei na pratica essas comunicação, não poderei te ajudar muito.
Mais se ideia ajudar…, já tentou usar Web service? eu ainda não usei mais já fui indicado a usar, talvez nesse seu caso te ajude.

Nem eu fera, não sei qual é o mistério!!!

Criado 6 de julho de 2013
Ultima resposta 10 de jul. de 2013
Respostas 5
Participantes 4