PDA

View Full Version : [JAVA] Problema con il load delle immagini


N3OM4TR|X
16-03-2010, 15:00
Salve a tutti. Ultimamente mi sto dedicando alle interfacce grafiche in Java. Ho lavorato ad un programmino per 3 giorni e funge. Quindi ho deciso di provare qualcosa di un pochino più "bello" e di inserire qualche immagine di background ai miei JButton e JPanel.

Gironzolando in rete ho trovato parecchi modi equivalenti (ImageIcon, BufferedImage, ImageIO, etc) per farlo ma non ne funziona neppure uno.

Mi spiego meglio. Dopo tutti i vari tentativi ho preso un programma già fatto e funzionante fra i tutorial della Sun (http://java.sun.com/docs/books/tutorial/2d/images/examples/LoadImageApp.java). Ebbene neppure questo funziona correttamente.

Aggiungendo un e.printStackTrace(); al catch dell'eccezione il risultato è che il file (strawberry.jpg in questo caso) non può essere letto. Eppure è situato nella stessa cartella, importato attraverso Eclipse.

javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at pippo.LoadImageApp.<init>(LoadImageApp.java:22)
at pippo.LoadImageApp.main(LoadImageApp.java:47)

Sto usando Windows 7 Ultimate da qualche giorno ma gli accessi in lettura e scrittura mi sembra ci siano tutti. Quale può essere il problema? Come risolverlo? Fra un po' dovrei iniziare a lavorare su un progetto un po' più serio del semplice apprendimento e mi servirebbe davvero risolvere questa situazione.

*andre*
16-03-2010, 15:52
img = ImageIO.read(getClass().getResource("strawberry.jpg"));

così facendo ritorna la posizione del file strawberry.jpg riferito alla posizione del file .class, quindi se metti l'immagine dentro workspaceEclipse/nomeprogetto/bin/ sei a posto ;) ed è un buon metodo perchè non hai limiti di posizione nel sistema, cioè la puoi mettere dove vuoi basta che sia con il class :)

i metodi per acquisire le immagini sembrano equivalenti ma ci sono delle differenze :) c'è un articolo su questo nei blog dei personaggi di sun, ora non mi ricordo il link se mi viene in mente te lo posto :)

N3OM4TR|X
16-03-2010, 16:00
Funge!!! Ti ringrazio!!!
C'ho sbattuto la testa 6h stamattina!

Però ho una domanda: se creo il Jar e si trova all'interno del Jar l'immagine? Funziona ugualmente? E invece (come preferirei fare) se si trova in una cartella "img" nella stessa dir del Jar? Mi basta modificare in "img/strawberry"?

*andre*
16-03-2010, 16:24
allora se non ricordo male se viene fatto una pack dentro un jar getClass().getResources("") ritorna la posizione del jar, quindi la tua immagine può trovarsi sia dentro che fuori al jar.. dovresti fare una prova però che non ne sono sicuro :D