Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Sequenza immagini .png

Hybrid View

  1. #1

    Sequenza immagini .png

    Con questo codice riesco a mandare in loop una sequenza di immagini.
    Devo scrivere però scrivere il percorso di ogni immagine ma siccome ne ho centinaia come posso fare a dire parti della prima e vai fino alla fine? Grazie

    codice:
    package PACK;
    import java.awt.Color;
    import java.awt.Image;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    
    
    
    public class Project extends JFrame{
        JLabel pic;
        Timer tm;
        int x = 0;
    
    
    
    
    
    
        //Images Path In Array
        String[] list = {
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0018.png",
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0019.png",
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0020.png",
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0021.png",
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0022.png",
    			"C:/Users/Desktop/JAVAnew/SEQUENZAimmagini/SQ1/CAMION0023.png"
    			
    		};
    	
    
    
    	
        public Project(){
            super("Java SlideShow");
            pic = new JLabel();
            pic.setBounds(40, 30, 700, 300);
    
    
    
    
    
    
    
    
            //Call The Function SetImageSize
            SetImageSize(5);
            
    
    
    
    
           //set a timer
            tm = new Timer(40,new ActionListener() {
    
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    SetImageSize(x);
                    x += 1;
                    if(x >= list.length )
                        x = 0; 
                }
            });
            add(pic);
            tm.start();
            setLayout(null);
            setSize(800, 400);
            getContentPane().setBackground(Color.decode("#000000"));
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
        //create a function to resize the image 
        public void SetImageSize(int i){
            ImageIcon icon = new ImageIcon(list[i]);
            Image img = icon.getImage();
            Image newImg = img.getScaledInstance(pic.getWidth(), pic.getHeight(), Image.SCALE_SMOOTH);
            ImageIcon newImc = new ImageIcon(newImg);
            pic.setIcon(newImc);
        }
    
    
    public static void main(String[] args){ 
          
        new Project();
    }
    }

  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
    Devo scrivere però scrivere il percorso di ogni immagine ma siccome ne ho centinaia come posso fare a dire parti della prima e vai fino alla fine?
    Beh, la questione è innanzitutto un'altra: cosa la applicazione deve "sapere" di queste immagini?

    a) le immagini fanno parte fissa della applicazione?
    oppure
    b) le immagini devono essere scelte/configurabili a discrezione dell'utente? Se sì, cosa deve sapere la applicazione: una directory base in cui cercare le immagini? un elenco di pathname passato o configurato dall'utente?


    P.S. il codice che hai scritto comunque è un po' "spartano" ... andrebbe sistemato un po'.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Vorrei che con un pulsante "cercare". Io possa aprire la cartella che desidero, contenente la sequenza di immagini .png, una volta selezionata la cartella il programmino le faccia partire dalla prima all'ultima immagine contenuta nella cartella.

  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
    Vorrei che con un pulsante "cercare". Io possa aprire la cartella che desidero, contenente la sequenza di immagini .png, una volta selezionata la cartella il programmino le faccia partire dalla prima all'ultima immagine contenuta nella cartella.
    Puoi:
    1) Far scegliere la directory all'utente usando JFileChooser. Nota che JFileChooser ha anche una modalità di selezione "directories only" (puoi solo selezionare directory, non file).
    2) Con il java.io.File che rappresenta la directory scelta, usi i metodi list o listFiles per elencare i file. Puoi anche applicare un "filtro" in modo da cercare es. tutti i file con estensione .png
    3) Per ciascun file rintracciato .... fai il caricamento come devi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    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.

  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
    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

  7. #7
    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

  8. #8
    ok grazie ci provo

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.