Cargando imágenes desde Java
En este pequeño post veremos como cargar imagenes en Java, tanto si se encuentran dentro del mismo Jar de la aplicación, como si la imagen se encuentra fuera del misma.
En ambos casos vamos a utilizar la clase ImageIcon para recuperar la imagen. Luego de obtener la imagen, esta clase nos permitirá utilizarla tanto para íconos, fondo de contenedores, etc.
Imágen externa al Jar
Este es el caso que se produce cuando la imagen se encuentra en alguna carpeta del sistema operativo:

Para cargarla podemos indicarle a ImageIcon tanto el path relativo (desde donde se ejecuta el Jar) como el path absoluto de la imagen.
Se realiza de la siguiente forma (ver que se utiliza getImage()):
Image imagenExterna = new ImageIcon("tierra.jpg").getImage();
Imágen interna al Jar
Este caso ocurre cuando la imagen se encuentra dentro del Jar de la aplicación:

Para cargarla podemos indicarle a ImageIcon el recurso que se quiere utilizar. Para instanciar el recurso debemos indicar el path relativo (desde la clase que quiere cargar la imagen) como el path absoluto de la imagen dentro del Jar (un path absoluto en el jar comienza con /, como por ejemplo “/ar/lefunes/recurso/imagen.png”).
Se realiza de la siguiente forma:
Image imagenInterna = new ImageIcon(
getClass().getResource("satelite.jpg")
).getImage();
Ejemplo
Un ejemplo de como se pueden utilizar estos conceptos junto con la clase JPanelConFondo que vimos en un post anterior.
Código:
package ar.lefunes.cargarimagenes;
import java.awt.Image;
import javax.swing.ImageIcon;
public class CargaImagenes extends javax.swing.JFrame {
private JPanelConFondo jPanelConFondo1 = new JPanelConFondo();
private JPanelConFondo jPanelConFondo2 = new JPanelConFondo();
public CargaImagenes() {
//...
cargarImagenes();
}
private void cargarImagenes() {
Image imagenInterna = new ImageIcon(
getClass().getResource("satelite.jpg")).getImage();
jPanelConFondo1.setImagen(imagenInterna);
Image imagenExterna =
new ImageIcon("tierra.jpg").getImage();
jPanelConFondo2.setImagen(imagenExterna);
}
//...
}
Al ejecutar el código obtendremos la siguiente pantalla:

tener en cunta que la imagen externa (“tierra.jpg” en este ejemplo) tienen que estar en la misma carpeta del jar, ó en la carpeta raiz del proyecto cuando ejecutamos el proyecto desde NetBeans.
Ejemplo Descargable
Puedes descargar el ejemplo completo desde http://lefunes.googlecode.com/files/CargarImagenes.zip (aprox. 54 KB)
Espero les sirva
Saludos
Filed under: Java, Swing | 14 Comments
Tags: image, ImageIcon, imagen, Java, Swing
Gracias LeFunes! todo un detallazo tu explicación para gente que esta empezando en esto como yo.
Saludos.
Eternas gracias!!! la verdad q siempre habia visto paginas de este tema pero la explicacion tuya se lleva el premio, muy sencilla y anda perfecto…
Hola:
Como le puedo hacer para insertar una imagen en NetBeans seleccionando yo la ruta donde se encuentra la imagen,
Todo esta desde un boton examinar y me abra el explorador de windows.
Sin mas por el momento les agradeseria muchisimo que me orientaran.
@Veronica simplemente agrega un label a tu panel y hace click “…” de la propiedad “icon” del mismo. Ahí te pregunta desde donde querés cargar la imagen.
Saludos
El ejemplo es muy pobre, no explica nada y los archivos de descargar son pura basura… si va a colocar algo para que lo leamos lo demás, que sea algo que valga la pena… Shell Joshe
bueno en lo particular me sirvio para enterder el manejo de las clases
no todo es facil hay que hacer algo nosotros.
Hola me gustaria saber como arrastro una imagen con el mouse
hola me gustaria saber como añadir a un panel una imagen desde un boton examinar que me abra el explorador de windows y la tome de cualquiera ruta, pero que se pueda colocar al mismo tamaño del panel asi sea que la imagen examinada sea grande y el panel pequeño
espero pronta respuesta gracias…
broer cvr tus ejemplo gracias no podrias mandarme mini proyectos con interfaz graficas o una calculadora cientifica en java netbeans
Muchas gracias por la explicación !!!!!!
hola… no se si se puede cargar imagen con netbeans (java) desde un servidor es decir el jar esta en el pc cliente y la imagen se encuentra en un servidor y quiero mostrar la imagen en la pc cliente… se prodra!!!
hola sabes que cuando cargo el proyecto que dejaste como ejemplo me salta este error si me podes decir qeu estoy haciendo mal te agradesco, justo estoy necesitando colocar una imagen y es uno de los pocos post que esta claro.
muchas gracias
Exception in thread “AWT-EventQueue-0″ java.lang.NullPointerException
at javax.swing.ImageIcon.(ImageIcon.java:167)
at ar.lefunes.cargarimagenes.CargaImagenes.cargarImagenes(CargaImagenes.java:25)
at ar.lefunes.cargarimagenes.CargaImagenes.(CargaImagenes.java:21)
at ar.lefunes.cargarimagenes.CargaImagenes$1.run(CargaImagenes.java:121)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)