Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Visualizzare un'immagine da un byte array

    Ho un'applicazione che legge delle immagini da una webcam in formato JPEG, le impacchetta in un byte array e le manda su una socket UDP.

    Quello che devo fare dall'altra parte e' aprire una server socket, ricevere l'immagine e visualizzarla.
    Come posso fare una volta che ricevo il byte array contenete la JPEG a visualizzarla in un componente swing/awt?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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

    Re: Visualizzare un'immagine da un byte array

    Originariamente inviato da mxa
    Ho un'applicazione che legge delle immagini da una webcam in formato JPEG, le impacchetta in un byte array e le manda su una socket UDP.

    Quello che devo fare dall'altra parte e' aprire una server socket, ricevere l'immagine e visualizzarla.
    Come posso fare una volta che ricevo il byte array contenete la JPEG a visualizzarla in un componente swing/awt?
    Ammesso che questo array contenga tutti i byte esattamente nella sequenza come se fossero dentro un file fisico .jpg, ti basta:

    a) Invocare createImage(byte[] imagedata) della classe java.awt.Toolkit
    b) Istanziare un javax.swing.ImageIcon con il suo costruttore ImageIcon(byte[] imageData)
    c) Invocare read() di javax.imageio.ImageIO che riceve un InputStream (tu passerai un ByteArrayInputStream creato con l'array)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ecco quello che ho fatto, magari puo' tornare utile a qualcuno.

    codice:
    private class ImageComponent extends JPanel
        {
            public ImageComponent() {}
            
            public ImageComponent (byte[] image)
            {
                ByteArrayInputStream bis = new ByteArrayInputStream (image);
                try {
                    _image = ImageIO.read (bis);
                }
                catch (IOException ex){}
            }
            
            public void updateImage (byte[] image)
            {
                ByteArrayInputStream bis = new ByteArrayInputStream (image);
                try {
                    _image = ImageIO.read (bis);
                }
                catch (IOException ex){}
                repaint();
            }
            
            public void paint(Graphics g)
            {
                g.drawImage(_image, 0, 0, null);
            }
            
            public Dimension getPreferredSize()
            {
                if (_image == null) {
                    return new Dimension (320, 240);
                } else {
                    return new Dimension (_image.getWidth (null), _image.getHeight (null));
                }
            }
            
            BufferedImage _image;
        }
    In pratica ho creato una classe che estende un Jpanel (in realta' potevo anche estendere Component direttamente) che riceve un byte array tramite il metodo updateImage(), dopo di che lo legge come BufferedImage passando per un ByteArrayInputStream. Poi chiamo repaint() che quindi mi ridisegna il componente con la nuova immagine che gli ho passato.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4

    Re: Visualizzare un'immagine da un byte array

    Originariamente inviato da mxa
    Ho un'applicazione che legge delle immagini da una webcam in formato JPEG, le impacchetta in un byte array e le manda su una socket UDP.

    Quello che devo fare dall'altra parte e' aprire una server socket, ricevere l'immagine e visualizzarla.
    Come posso fare una volta che ricevo il byte array contenete la JPEG a visualizzarla in un componente swing/awt?
    Riprendo il mio primo post: e se l'immagine, invece di essere una JPEG fosse un PPM, funziona lo stesso?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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

    Re: Re: Visualizzare un'immagine da un byte array

    Originariamente inviato da mxa
    e se l'immagine, invece di essere una JPEG fosse un PPM, funziona lo stesso?
    No, devi usare una libreria apposita. Perché il formato PPM non è supportato nativamente dal framework di Java SE.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6

    Re: Re: Re: Visualizzare un'immagine da un byte array

    Originariamente inviato da andbin
    No, devi usare una libreria apposita. Perché il formato PPM non è supportato nativamente dal framework di Java SE.
    Come pensavo
    Sai indicarmi qualcosa di specifico?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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

    Re: Re: Re: Re: Visualizzare un'immagine da un byte array

    Originariamente inviato da mxa
    Sai indicarmi qualcosa di specifico?
    List of Java libraries to read and write pixel image files
    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.