FileImageInputStream e Sockets

2 respostas
Moony

Olá :)

estou fazendo um trabalho com sockets em que preciso enviar e exibir uma imagem. Na verdade, é um chat, e essa imagem deve ser a imagem de exibição da pessoa. No código do botão "abrir imagem", por exemplo, eu usei um FileChooser e coloquei o arquivo em um FileImageInputStream. Queria saber se posso enviar esse tipo de stream através de socket, ou se preciso rasterizar a imagem e/ou transformá-la em um array de bytes e depois em FileImageInputStream novamente. Já tentei dos dois jeitos e não funcionava.

Esse era o código que eu estava usando (sem sockets e sem FileImageInputStream) só pra testar se estava exibindo a imagem num jLabel, mas quando eu executava não dava nenhum erro, mas o jLabel simplesmente não exibia a imagem:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       
        try {
          JFileChooser fc = new JFileChooser();

          fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
          int result = fc.showOpenDialog(this);

          if(result == JFileChooser.CANCEL_OPTION)
            file = null;
            else {
            file = fc.getSelectedFile();
            String nome = file.getName();
            FileOutputStream imagem = new FileOutputStream(nome);
            byte[] b = new byte[(int)file.length()];
            imagem.flush();
            imagem.write(b);
            imagem.close();
            ImageIcon image = new ImageIcon(b);

           jLabel1.setIcon(image);
             }

            } catch (IOException ex) {
            Logger.getLogger(Janela.class.getName()).log(Level.SEVERE, null, ex);
        }


        
    }

Se puderem me ajudar, obrigada :)

2 Respostas

Lucas_Abbatepaolo

Pelo que entendi do seu codigo vc cria o FileOutputStream, porem nao preenche ele com nada…

maruero

Moony,

Primeiramente, o seu algoritmo está totalmente errado.
Você tem que ler o arquivo do disco utilizando um FileInputStream e não um FileOutputStream.
Depois disso você tem que ler o arquivo utilizando read e depois usar os bytes para construir a imagem.
Depois disso você cria ImageIcon. Basicamente aonde você está utilizando FileOutputStream voce tem que usar o FileInputStream.

Espero ter ajudado,
Marcelo

Criado 2 de outubro de 2010
Ultima resposta 7 de out. de 2010
Respostas 2
Participantes 3