Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Sequenza immagini .png

Hybrid View

  1. #1
    codice:
    ButtonSearch = new JButton("Search");
            ButtonSearch.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    JFileChooser chooser = new JFileChooser();   //trova file--------------------------------------------
    
    
                    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    
    
                    chooser.showOpenDialog(null);
                   
                    FileNameExtensionFilter filter = new FileNameExtensionFilter("png");
                    
                    File f[] = (new File(getName()).listFiles(filter);
                    String filename=f.getName();
    
    
                                                  
                }
            });
    Le ultime due righe di codice so che sono errate ma non capisco come posso dirgli prendi questi file che ho selezionato nelle righe di codice sopra all'errore. Non so qual è il modo giusto di dirglielo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da desiderio Visualizza il messaggio
    codice:
                    chooser.showOpenDialog(null);
                   
                    FileNameExtensionFilter filter = new FileNameExtensionFilter("png");
                    
                    File f[] = (new File(getName()).listFiles(filter);
                    String filename=f.getName();
    Le ultime due righe di codice so che sono errate ma non capisco come posso dirgli prendi questi file che ho selezionato nelle righe di codice sopra all'errore. Non so qual è il modo giusto di dirglielo.
    Innanzitutto il valore di ritorno di showOpenDialog andrebbe testato (non ricordo se l'avevo già detto a te o a un altro utente di recente sul forum). Solo se l'utente ha "approvato" la selezione, allora puoi proseguire.

    Se l'utente ha approvato, allora usi getSelectedFile() di JFileChooser per ottenere il java.io.File che rappresenta la directory (non può essere ovviamente un file comune se la modalità è DIRECTORIES_ONLY).

    Con il File, usi listFiles(filter) per ottenere un array di File. L'array lo dovrai poi ovviamente iterare andando poi a usare ciascun oggetto File.


    NOTE:
    1) Hai usato FileNameExtensionFilter("png"), è sbagliato!
    Guarda la documentazione:

    FileNameExtensionFilter(String description, String... extensions)

    Come primo parametro DEVI passare una descrizione e poi DEVI passare 1+ estensioni.

    2) Non te l'ho detto prima perché non ci ho pensato subito. Se usi ImageIcon per caricare le immagini, ok. Tieni però presente che ImageIcon usa il Toolkit di AWT per il caricamento delle immagini. Il getImage di Toolkit (usato da ImageIcon) applica un meccanismo di "caching" delle immagini.
    A parità di url/filename, restituisce sempre lo stesso oggetto Image. Ovvero, tutte le immagini restano memorizzate in memoria.

    In sostanza, se dovesse capitare di avere decine e decine di immagini e magari un pochino grosse, è possibile che il tuo heap space si esaurisca. Questo è un aspetto che devi valutare ed eventualmente usare alternative.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Innanzitutto il valore di ritorno di showOpenDialog andrebbe testato (non ricordo se l'avevo gi� detto a te o a un altro utente di recente sul forum). Solo se l'utente ha "approvato" la selezione, allora puoi proseguire.
    si s� l'avevi detto a me ok lo sistemo.

    Se l'utente ha approvato, allora usi getSelectedFile() di JFileChooser per ottenere il java.io.File che rappresenta la directory (non pu� essere ovviamente un file comune se la modalit� � DIRECTORIES_ONLY)
    .
    Vorrei selezionare solo la cartella contenente la sequenza png e che lui capisse di prenderle tutte le immagini. � giusto con il directory only? Avevo capito cos� e ti chiedo se ho capito male.

    Con il File, usi listFiles(filter) per ottenere un array di File. L'array lo dovrai poi ovviamente iterare andando poi a usare ciascun oggetto File
    .
    guardo cosa intendi su questo e ti dico. Grazie


    NOTE:
    1) Hai usato FileNameExtensionFilter("png"), � sbagliato!
    Guarda la documentazione:

    FileNameExtensionFilter(String description, String... extensions)

    Come primo parametro DEVI passare una descrizione e poi DEVI passare 1+ estensioni
    .
    ma infatti cosa serve la descrizione? Cio� cosa fa? Grazie

    2) Non te l'ho detto prima perch� non ci ho pensato subito. Se usi ImageIcon per caricare le immagini, ok. Tieni per� presente che ImageIcon usa il Toolkit di AWT per il caricamento delle immagini. Il getImage di Toolkit (usato da ImageIcon) applica un meccanismo di "caching" delle immagini.
    A parit� di url/filename, restituisce sempre lo stesso oggetto Image. Ovvero, tutte le immagini restano memorizzate in memoria.

    In sostanza, se dovesse capitare di avere decine e decine di immagini e magari un pochino grosse, � possibile che il tuo heap space si esaurisca. Questo � un aspetto che devi valutare ed eventualmente usare alternative
    .
    cos'altro si usa per invece poterne caricare molte? Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da desiderio Visualizza il messaggio
    si s� l'avevi detto a me.
    Sei recidivo allora ...
    Scherzo, ovviamente.

    Quote Originariamente inviata da desiderio Visualizza il messaggio
    Vorrei selezionare solo la cartella contenente la sequenza png e che lui capisse di prenderle tutte le immagini. � giusto con il directory only? Avevo capito cos� e ti chiedo se ho capito male.
    Il fatto del "che lui capisse di prenderle tutte" ovviamente devi farlo tu programmaticamente ... non c'è nulla di "magico" in questo.
    Se hai una directory, puoi ottenere (con i metodi di File) tutte le entry della directory, eventualmente filtrate.
    Concettualmente esattamente come quando da prompt fai es. dir C:\blabla oppure dir C:\blabla\*.png

    Quote Originariamente inviata da desiderio Visualizza il messaggio
    guardo cosa intendi su questo e ti dico.
    Vedi documentazione dei list() e listFiles() di java.io.File.


    Quote Originariamente inviata da desiderio Visualizza il messaggio
    ma infatti cosa serve la descrizione? Cio� cosa fa?
    Ok, scusa .... non me ne sono accorto subito prima io e avrei dovuto fermarti prima.

    FileNameExtensionFilter estende javax.swing.filechooser.FileFilter che è un FileFilter che è specifico SOLO per l'uso con JFileChooser. La descrizione infatti viene usata e mostrata nel JFileChooser. Qui ha senso.

    Per usare i "filtri" con i metodi di File devi usare
    - un java.io.FileFilter
    oppure
    - un java.io.FilenameFilter

    Come vedi questi sono specifici del package java.io. Questi due tipi sono delle interface e rappresentano solo il predicato "accetta un file oppure no". E non c'è alcuna descrizione ... non avrebbe senso.

    In sostanza: NON puoi usare FileNameExtensionFilter. Devi per forza farti una tua implementazione di una di queste due interfacce.

    Quote Originariamente inviata da desiderio Visualizza il messaggio
    cos'altro si usa per invece poterne caricare molte? Grazie
    Il punto è un altro. Se vuoi davvero tenere in memoria tantissime immagini, allora devi sapere come dimensionare il heap-space in modo adeguato. Se le devi tenere tutte in memoria non c'è molto che tenga ... hai bisogno del heap-space sufficiente per fare questo.

    Ma la questione è, se vuoi fare una specie di "slide show", la domanda è semplice: devi per forza caricarle tutte in memoria?? La risposta in generale è NO. Puoi anche valutare una logica del tipo: carico la immagine necessaria in un certo momento, appena ne devo visualizzare un'altra la carico e l'altra la rendo non "raggiungibile", così che venga garbage collected.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Intanto grazie. Non capisco proprio tutto ma passo passo mi informo e ti chiedo con pi� cognizione basandomi su quello che mi dici.
    Per il programma che sogno desidero come in after effects, visualizzare una sequenza .png (come un video a 25fps) intanto riuscire a fare questo.
    Poi aggiungere, play, stop, pause e poi tipo tre bottoni Es. botton1, button2, button3, se premo l'1 e il 3 e premo play partono le sequenze di immagini associate Ha questi bottoni. P.S. Le sequenze possono contenere anche 2000 immagini per questo nn posso scrivere la directory di ogni singola png.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da desiderio Visualizza il messaggio
    Per il programma che sogno desidero come in after effects, visualizzare una sequenza .png (come un video a 25fps) intanto riuscire a fare questo.
    Poi aggiungere, play, stop, pause e poi tipo tre bottoni Es. botton1, button2, button3, se premo l'1 e il 3 e premo play partono le sequenze di immagini associate Ha questi bottoni. P.S. Le sequenze possono contenere anche 2000 immagini per questo nn posso scrivere la directory di ogni singola png.
    2000 immagini renderizzate a 25fps continui?? (poi bisogna anche vedere le dimensioni delle immagini) Te lo dico subito, non è facile e richiede un po' di conoscenze su svariati aspetti. Primo fra tutti la gestione della memoria (hai fatto qualche calcolo basilare su quanto occupano in memoria 2000 immagini, sapendo ovviamente width/height e bits-per-pixel?).

    Non voglio certamente bloccarti, sfiduciarti o sconsigliartelo .... vai pure avanti. Ma andrai incontro ad una serie di problematiche su cui inevitabilmente ci sbatterai (molto) la testa ....
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.