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 | 50 Comments
Etiquetas: image, ImageIcon, imagen, Java, Swing
Hola me podrían ayudar necesito ver una imagen en eclipse que se encuentra almacenada en DB4o
hola necesito visualizar una imagen externa desde netbeans, pero que no se encuentre dentro de las carpetas del proyecto, si no indicandole la ruta, quiero el codigo java… gracias
HOLA AMIGO AYUDAME NO SE COMO MOSTRAR I OCULTAR UNA IMAGEN JAVA ME.
Hola que tal, muchas gracias por tus ejemplos, me están sirviendo mucho dado que apenas comienzo a programar en Java. Saludos.
Muy bueno el ejemplo, lastima que no carga la imagen….
Muchas gracias si me sirvio tu explicacion. Saludos
A mi me genera el error «java.lang.NullPointerException» uso esta ruta de imagen «/Image.png» y la imagen esta en la carpeta del proyecto, no en la de recursos ¿que ocurre?
A mi me sucede lo mismo, podrian indicar el fix adeacuado, porque cuando se abre en netbeans (no se por que) borra los private JPanel1 y JPanel 2 que se declaran al final de la clase carga imagenes pero, aun asi no puedo lograr que el JFrame haga el diplay de la imagen.
Primer comentario del 2013 solo para decirte GRANDE MAN!!! Probe con 29184902190519275 de formas y la tuya excelente 😉 good
Genial y breve, exactamente lo que necesitaba saber.
hola amigo …buen post… quisiera saber como se carga una imagen bit a bit en java utilizando swing en neatbeans
(utilizando interfaz grafica de java) agradeceria si me solucionara ese problema
El mejor que he encontrado.Muchíssimas gracias
necesito saber como pintar una imagen en netbeans 7.1.1, si la imagen esta en mi equipo.
Tengo un problema, espero me puedas ayudar.
Cargo imagenes animadas,pero que se repiten una sola ves. Cuando quiero volver a cargar esa misma imagen ya no me lo vuelve a cargar, simplemente muestra la ultima imagen de la imagen animada. el ultimo frame pues….no se como puedo yo hacer que cargue desde el principio, que empiece con el primer frame de laimagen .gif
espero me puedas ayudar, gracias.
Muchas gracias, me sirvio de mucho tu ejemplo 😀
Por favor necesito que una imagen como un icono haga funcion de boton el cual tenga eventos, ayudenme.
Hola, quiciera saber como puedo mostrar una imagen en un reporte generado en netbeans. Dicho reporte fue creado en una forma Java Class.
Gracias
muchas gracias por tu codigo me ha sido muy util
saludos!!!
Para cargar una imagen desde una ruta del tamaño que yo quiero hice lo siguiente…
//Yo lo hice así: Primero la librería:
import java.awt.Image;
//Ahora:
ImageIcon icono = new ImageIcon(jTextField1.getText().toString());//Cargo imagen desde la ruta que ingreso en un jTextField1.
Image imagen = icono.getImage(); //La paso a imagen para redimencionarla.
ImageIcon iconoEscalado = new ImageIcon (imagen.getScaledInstance(100,100,Image.SCALE_SMOOTH)); //Tomo el Image Icon con la imagen redimencionada
jLabel1.setIcon(iconoEscalado);//La Coloco en un Jlabel para visualizarla.
Claro leí desde la Fuente:
http://www.forosdelweb.com/f45/imagenes-java-391635/
Muchas gracias, no sabes cuanto tiempo invetí buscando un ejemplo como este. Graciaaaaaaaaaaaas.
me gustaría saber como hacerle para q la imagen me imprima junto con un proceso,esq solo me imprime la imagen y el proceso por otro lado,como puedo hacerle para q aparezca junto. la imagen como fondo de mi proceso o solo introducirla enos case para cuando quiera entrar a ese case imprima la imagen
espero y puedan ayudarme muchísimas gracias
hola que tal bueno como puedo yo colocAR una imagen de fondo a un formulario y
que los botones o labeles salgan por encima de la imagen
HOLA!!
TENGO TODO LA IMAGEN Y TODO…
ME SIGUE SIN MOSTRAR LA IMAGEN… A QUE SE DEBERA?
SI SE COMO DESCOMPRIMIRLO PERO COMO ULTILIZARLO EN JAVA PARA VER LOS EJEMPLOS
HAZ UN VIDEO DE COMO USAR TU ARCHIVO DE EJEMPLO PORFAVOR
por favor necesito ayuda para expandir y disminuir una imagen con el slider en java gracias..
scull
Usa la clase SwingWorker para que haga en un hilo aparte (underground) la carga de la imagen y no se trave … saludos
Hola a todos tengo un explorador de imagenes en java que me funciona correctamente, en el puedo vizualizar las fotos de mi maquina y de una vaze de datos perfectamente
lo que sucede es que estoy algo decepcionado con la velocidad en que java carga las imagenes . Les explico mas:
én un panel tengo el arbol de directorios y en otro panel muestro las miniaturas de del directorio seleccionado estilo el explorador de windows
pero cuando las imagenes son muy grandes (1 a 6 megas) tarda 2-4 cargando las fotos sin contar el tiempo en escalarlas que en este momento es despreciable.
Alguien sabe como optimizar esto en java?????
gracias de entemano
Gracias en verdad, muchísimas gracias. le hice un par de correcciones al código, pero no es nada como para comentar. Está perfecto. Qué sería de mi sin personas que ayuden a los demás como tú, desinteresadamente. Muchas gracias nuevamente.
muy bueno gracias me ayudo bastante para colocarl unas imagenes, ya que lo hacia pero tenia el problema de que cuando generaba el jar no aparecia las imagenes y todo era por el getClass().getResourse(), solo que tenia el problema de que leia el fichero de la imagen con un ImageIO. lo cual al hacerlo con un Image y luego usar el ImageIcon me facilito todo gracias!.
Hola que tal ojala alguien me pueda ayudar, tengo una imagen que la he tomado desde la base de datos de un campo tipo BLOB y deseo verla en un pequeño tamaño como le hago si de antemano se que mis imagenes son de distintos tamaños y quisiera mostrarlos todos del mismo
puedes definir el tamaño de las imagenes al inicio del programa
con variables donde definas que tan la alto y ancho lo quieres y ya despues
solo ir cargando tus imagenes con getImage(X,Y).
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)
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!!!
Muchas gracias por la explicación !!!!!!
broer cvr tus ejemplo gracias no podrias mandarme mini proyectos con interfaz graficas o una calculadora cientifica en java netbeans
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…
Hola me gustaria saber como arrastro una imagen con el mouse
bueno en lo particular me sirvio para enterder el manejo de las clases
no todo es facil hay que hacer algo nosotros.
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
Me hice una pregunta cuando leí tu comentario: «¿Por qué este tipo tiene que menospreciar el trabajo de alguien que se nota que tiene amor por lo que hace?». A mi parecer, si a una persona no le gusta el trabajo de otra por «x» motivo pues entonces sale de la página, blog, foro, etc. y busca otra que tenga la información que está buscando.
No entiendo la necesidad de «postear» un comentario tan negativo.
Ahora te hago la pregunta yo… ¿Por qué razón lo hacés?
En cuanto al tutorial, una obra maestra… Muy bien explicado además de sencillo. Gracias por hacer esto.
Saludos,
Leonardo
@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
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.
JFileChooser g = new JFileChooser();
g.setMultiSelectionEnabled(false);
g.showOpenDialog(null);
if (g.getSelectedFile() != null) {
ImageIcon image = new ImageIcon(g.getSelectedFile().getPath());
LblImg.setText(«»);
if (image.getIconHeight() > 128 || image.getIconWidth() > 128) {
ImageIcon imageScalada = new ImageIcon(image.getImage().getScaledInstance(379, 392, 128));
LblImg.setIcon(imageScalada);
carta_presentacion = image.getDescription();
JOptionPane.showMessageDialog(null, carta_presentacion);
l.InseInicio(carta_presentacion);
} else {
LblImg.setIcon(image);
}
}
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…
Gracias LeFunes! todo un detallazo tu explicación para gente que esta empezando en esto como yo.
Saludos.