Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31

    Mandare un oggetto Image via Socket

    Ciao io ho bisogno di inviare un oggetto Image (più precisamente un BufferedImage)
    via socket

    però quando faccio streamout.writeObject(new BuffereImage(..))

    lancia l'eccezione: NotSerializableException

    come posso rendere un BufferedImage Serializzabile?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Mandare un oggetto Image via Socket

    Originariamente inviato da Codek
    Ciao io ho bisogno di inviare un oggetto Image (più precisamente un BufferedImage)
    via socket

    però quando faccio streamout.writeObject(new BuffereImage(..))

    lancia l'eccezione: NotSerializableException

    come posso rendere un BufferedImage Serializzabile?
    Né java.awt.Image né le sue sottoclassi sono serializzabili.

    Hai almeno 2 strade:
    a) Prendere i dati della immagine, larghezza/altezza e l'array dei pixel (generalmente come int[], vedi documentazione) ed inviare tutto quanto in un qualche formato che stabilisci tu.

    b) Scrivere la immagine in un qualche formato standard (es. gif/png ecc...) come se dovessi scriverla su un file ma invece che su file la mandi su un OutputStream. C'è infatti un write() di javax.imageio.ImageIO che permette di scrivere una immagine su un OutputStream. Però bisognerebbe vedere come hai stabilito il "protocollo" nella tua comunicazione (perché tu non sai a priori quanti byte scrive il write()!!).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31
    Ok, io dovrei mandare uno screenShot memorizzato in un BufferedImage
    Dal server al client..
    ma ogni 5 o 10 millisecondi..

    while(true){
    robot.delay(10);
    BufferedImage screenShot= new Screen(robot.createScreenCapture(new Rectangle(600,800)));
    out.writeObject(screenShot);

    }

    //così non funziona perchè lancia l'eccezzione notSerializable

    Qual'è la soluzione migliore a o b?

    per la a..dovrei memorizzare il BufferedImage in un array di byte?

    ma...Le RMI potrebbero essermi utili?

    e.. ho letto che si potrebbe reimplementare i readObject e writeObject.. in modo da inviare oggetti non serializzabili? è Possibile?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Codek
    ma ogni 5 o 10 millisecondi..

    while(true){
    robot.delay(10);
    BufferedImage screenShot= new Screen(robot.createScreenCapture(new Rectangle(600,800)));
    out.writeObject(screenShot);

    }
    Stai scherzando, vero??? Una immagine di 800x600 ogni 5/10 millisecondi e mandata via così ... "cruda", senza alcuna compressione/analisi della immagine??? Non ce la faresti mai!!! Sicuramente non su internet viste le capacità di upload delle ADSL.

    I sistemi e i software che permettono di inviare immagini da una webcam su internet innanzitutto usano formati ben più ridotti dell'800x600, frame rate più ridotti (max 20~30 al sec. ... non certo 50 o 100!!) e comunque usano algoritmi di compressione (es. MPEG) sofisticati che analizzano la immagine e anche la progressione nel tempo delle immagini per inviare in modo efficiente solo le minime variazioni.

    Originariamente inviato da Codek
    per la a..dovrei memorizzare il BufferedImage in un array di byte?
    No, per la a) intendevo dire: prendere larghezza/altezza (getWidth/getHeight) e l'array dei pixel (getRGB) e inviare il tutto in un qualche formato.

    Originariamente inviato da Codek
    Le RMI potrebbero essermi utili?
    No, si basa comunque sulla serializzazione degli oggetti.

    Originariamente inviato da Codek
    e.. ho letto che si potrebbe reimplementare i readObject e writeObject.. in modo da inviare oggetti non serializzabili? è Possibile?
    E dove l'avresti letto???


    P.S. per concludere il tutto .... cerchiamo di essere realisti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.