Stream di immagini

di il
2 risposte

Stream di immagini

Ciao a tutti.

La mia intenzione è quella di realizzare uno stream di immagini,il server è costruito in c#, i suoi compiti sono quelli di catturare delle immagini, convertirle in array di byte e spedirle attraverso un socket con la classe networkStream.
Dovrebbe essere funzionante in quanto ho costruito anche la parte client in c# e funzionava correttamente.
Ora però dato che il client deve essere all'interno di un sito ho pensato di usare un applet in java, al momento son bloccato con la lettura dello stream in java.
Praticamente il programma ha un timer ed ogni tot secondi legge lo stream in ingresso dal socket e lo converte in una immagine. Alla prima chiamata il tutto funziona correttamente arrivano i byte li converte e l'immagine è quella di partenza, poi dal secondo giro non arriva più nulla, il buffer di ingresso sembra essere saturo come che java non lo liberasse durante la lettura e ovviamente il server in c# rimane in attesa per scrivere.
Premetto che di java me ne intendo poco.
Qualche idea a riguardo?

Di seguito il codice della classe chiamata dal timer:


public void run(){
try
{
if(inputStr.available() > 700)
{
BufferedImage bufim = ImageIO.read(inputStr);
if(bufim != null)
{
File f = new File("D:\\prova.jpg");
ImageIO.write(bufim, "jpg", f);
}
}
}
catch(Exception e){}
}

quello che si nota dal debug è che dal secondo ciclo in poi la BufferedImage è null come che dallo stream di ingresso non arrivasse più nulla

Ringrazio in anticipo chiunque rispondesse.

Cordialmente

Marco

2 Risposte

  • Re: Stream di immagini

    Dovresti farci vedere anche il codice eseguito dalla classe che crea o richiama il Thread preposto a leggere lo stream.
  • Re: Stream di immagini

    Ecco qui la classe richiamata all'avvio:
    
    public class TCPclient {
    	public static void main(String argv[]) throws Exception
    	 {
    	  Socket clientSocket = new Socket("localhost", 2121);
    	  Timer     timer = new Timer();
              InputStream inputStr = clientSocket.getInputStream();
    	  TimerTask task = new TaskTimer(inputStr);
    	  timer.scheduleAtFixedRate(task, 130, 130);
    	 }
    
    }
    
Devi accedere o registrarti per scrivere nel forum
2 risposte