2012-07-02 13 views
13

Voglio leggere tutte le immagini in una cartella utilizzando Java.Carica e visualizza tutte le immagini da una cartella

Quando: si preme un tasto in un'applicazione Java,
Dovrebbe:

  • chiedere per il percorso della directory in un pop-up,
  • poi carico tutte le immagini da questa directory,
  • quindi visualizzare i loro nomi, tipi di dimensioni e dimensioni.

Come procedere?

Ho il codice per leggere l'immagine e anche per tutte le immagini nella cartella ma come si possono fare le cose che ho detto sopra?

Qualsiasi suggerimento o aiuto è benvenuto! Si prega di fornire link di riferimento!

+11

mostrarci quello che hai, e dirci dove hai trovato bloccato * esattamente * se ci si aspetta aiuto su questo. [chiedi] – Adam

+1

Dato che la tua domanda è abbastanza generica, posso solo supporre che tu stia cercando: http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html Questo è un modo di fare esso. – biziclop

+1

@kundanraj: se questo è compito, taggare è come tale. – haylem

risposta

38

testato perchè non su una macchina con un JDK installato, in modo da portare con me, ecco tutto digitato-in "così come sono", ma dovrebbe iniziare (si aspettano un afflusso di downvotes ...)

Caricamento tutte le immagini da una cartella

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.FilenameFilter; 
import java.io.IOException; 
import javax.imageio.ImageIO; 

public class Test { 

    // File representing the folder that you select using a FileChooser 
    static final File dir = new File("PATH_TO_YOUR_DIRECTORY"); 

    // array of supported extensions (use a List if you prefer) 
    static final String[] EXTENSIONS = new String[]{ 
     "gif", "png", "bmp" // and other formats you need 
    }; 
    // filter to identify images based on their extensions 
    static final FilenameFilter IMAGE_FILTER = new FilenameFilter() { 

     @Override 
     public boolean accept(final File dir, final String name) { 
      for (final String ext : EXTENSIONS) { 
       if (name.endsWith("." + ext)) { 
        return (true); 
       } 
      } 
      return (false); 
     } 
    }; 

    public static void main(String[] args) { 

     if (dir.isDirectory()) { // make sure it's a directory 
      for (final File f : dir.listFiles(IMAGE_FILTER)) { 
       BufferedImage img = null; 

       try { 
        img = ImageIO.read(f); 

        // you probably want something more involved here 
        // to display in your UI 
        System.out.println("image: " + f.getName()); 
        System.out.println(" width : " + img.getWidth()); 
        System.out.println(" height: " + img.getHeight()); 
        System.out.println(" size : " + f.length()); 
       } catch (final IOException e) { 
        // handle errors here 
       } 
      } 
     } 
    } 
} 

API utilizzate

Questo è relativamente semplice da fare e utilizza solo standard di classi JDK-confezionati:

Queste sessioni del Java Tutorial potrebbero aiutare pure:

possibili miglioramenti

  • utilizzare Apache Commons FilenameUtils per estrarre le estensioni dei file
  • Rileva i file sulla base di effettivi tipi MIME o contenuti, non si basa su estensioni
  • Vi lascio il codice dell'interfaccia utente. Dato che non so se questo è compito o no, non voglio fornire una soluzione completa. Ma per continuare:
    • Vedere uno FileChooser per selezionare la cartella.
    • Immagino che tu sappia già come realizzare cornici/finestre/finestre di dialogo.
    • Leggi le sezioni Java TutorialHow to Use Icons, che ti insegna come visualizzarle ed etichettarle.
  • ho lasciato fuori alcune questioni da affrontare:
    • la gestione delle eccezioni
    • cartelle con endigs male (dire di avere una cartella "TryMeIAmEvil.png")

Combinando tutto quanto sopra, è abbastanza facile da fare.

+1

è andato tutto meglio del previsto? ;) – Adam

+0

@codesparkle: io no, forse quel codice funziona davvero? :) Di solito quando pubblichi qualcosa che non va a buon fine, tieni rapidamente cestinato per il codice crappy inviato. O forse non è ancora l'ora di punta. Inoltre, mentre andavo, mi resi conto che l'OP stava probabilmente chiedendo i compiti, quindi non andai avanti. – haylem

+4

+1 hai fatto bene a digitarla senza IDE :) –

0

directory javaxt.io.Directory = new javaxt.io.Directory ("C: \ Users \ Public \ Pictures \ Sample Pictures"); directory.getFiles(); javaxt.io.File [] file;

java.io.FileFilter filter = file -> !file.isHidden() && (file.isDirectory() || (file.getName().endsWith(".jpg"))); 
    files = directory.getFiles(filter, true); 
    System.out.println(Arrays.toString(files)); 
0
step 1=first of all make a folder out of webapps 
step2= write code to uploading a image in ur folder 
step3=write a code to display a image in ur respective jsp,html,jframe what u want 

this is folder=(images) 
reading image for folder' 
Image image = null; 
     try { 
      File sourceimage = new File("D:\\images\\slide4.jpg"); 
       image = ImageIO.read(sourceimage); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     }  
    } 
+0

Puoi almeno condividere un codice valido? –

+0

Nessun problema condividerò tutto il mio codice non mi preoccupo –

Problemi correlati