Java - Cargar imagen desde una clase que no sea un applet

 
Vista:

Cargar imagen desde una clase que no sea un applet

Publicado por climentc (25 intervenciones) el 05/01/2001 00:00:00
Debo cargar una imagen desde una clase propia, pero no se como hacerlo, creo que java solo permite cargar imagenes desde un Applet
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cargar imagen desde una clase que no sea un app

Publicado por Jose (53 intervenciones) el 05/01/2001 00:00:00
Para cargar una imagen puedes usar los siguientes métodos de instancia de la clase Toolkit

public Image getImage(String filename)
public Image getImage(URL url)

Para conseguir una instancia de la clase Toolkit puedes usar el metodo de clase Toolkit

static Toolkit getDefaultToolkit()

O si tienes una instancia de Component (o alguna de sus clases derivadas)

Toolkit getToolkit()

Ejemplos:

Toolkit.getDefaultToolkit().getImage("imagen.gif");

-------------------------------------------------------------------------------------

Component c;

...

c.getToolkit().getImage("imagen.gif");

Si no te queda claro y quieres ejemplos más desarrollados espero aqui tu siguiente pregunta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar imagen desde una clase que no sea un app

Publicado por climentc (25 intervenciones) el 07/01/2001 00:00:00
Lo he intentado con el Toolkit, pero me dice que no tengo permiso para leer el fichero gráfico. Creo que es debido a que estoy haciendo un applet y que no sé cómo acceder a la imagen (cómo crear la URL).

Si tienes algun ejemplo donde cargues una imagen en un applet pero desde una componente, no desde el applet, estaria muy agradecido de que me lo mostrases.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar imagen desde una clase que no sea un app

Publicado por Jose (53 intervenciones) el 07/01/2001 00:00:00
Necesito que me des más detalles de lo que prentendes hacer: ¿cargar la imagen desde un componente del applet?
No entiendo tu problema. Espero mas informacion.

¿Tu intención es crear un applet o una aplicación?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar imagen desde una clase que no sea un app

Publicado por climentc (25 intervenciones) el 09/01/2001 00:00:00
Mi idea es crear un Applet, pero quiero cargar las imagenes desde uno de sus componentes para dar mayor entendibilidad al programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cargando desde un Applet o un Frame

Publicado por Jose (53 intervenciones) el 11/01/2001 00:00:00
Como me parece que no tienes claro el asunto te lo explicare desde un principio
Supongamos que tienes una imagen foto.gif en el mismo directorio que esté tu documento HTML que carga el applet


/**********************************************************/

import java.awt.*;
import java.applet.*;

public class QueCosas extends Applet {
Image imagen;
public void start() {
imagen = getImage(getDocumentBase(), "foto.gif");
}

public void paint(Graphics g) {
if (imagen != null) g.drawImage(imagen,0,0,this);
}
}

/**********************************************************/

Como un applet solo puede acceder al servidor del que proviene
no puedes acceder a imagenes que esten en otros servidores o en disco local.

Esta restricción no la tienen las aplicaciones. Supongamos que el archivo foto.gif
está en el mismo directorio donde esté la siguiente clase


/**********************************************************/

import java.awt.*;

public class QueCosas extends Panel {
Image imagen;

public void start() {
imagen = getToolkit().getImage("lwp2.gif");
}

public void paint(Graphics g) {
if (imagen != null) g.drawImage(imagen,0,0,this);
}

public static void main(String [] args) {
QueCosas q = new QueCosas();
Frame f = new Frame();

q.start();

f.add(q);
f.setSize(500,400);
f.setVisible(true);
}
}


/**********************************************************/

Aqui podemos cargar lo que queramos desde donde queramos. ¿Quieres ver el equipo
que lleva el asunto Java? Mira la aplicación del siguiente mensaje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una aplicacion es más libre

Publicado por Jose (53 intervenciones) el 11/01/2001 00:00:00
Te aviso que necesitas conexion a la red y tardara en cargar la imagen. Mientras que carga
lo más probable es que el frame permanezca en blanco. TEN CALMA y ESPERA
(Para tener información de como va la carga hay que usar un MediaTracker. Pero ese no es el tema)


/*****************************************/

import java.net.*;
import java.awt.*;

public class QueCosas extends Panel {
Image imagen;

public void start() {
try { //Se necesita un try por si la url no existe
URL u = new URL("http://java.sun.com/graphics/people.gif");
imagen = getToolkit().getImage(u);
}
catch (Exception ex) {
System.out.println("Excepcion: "+ex);
}
}

public void paint(Graphics g) {
if (imagen != null) g.drawImage(imagen,0,0,this);
}

public static void main(String [] args) {
QueCosas q = new QueCosas();
Frame f = new Frame();

q.start();

f.add(q);
f.setSize(500,400);
f.setVisible(true);
}

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Es esto lo que querías?

Publicado por Jose (53 intervenciones) el 11/01/2001 00:00:00
Veamos si es esto lo que querias (me parece más confuso, pero bueno)


import java.net.*;
import java.awt.*;
import java.applet.*;

public class QueCosas extends Applet {
Image imagen;
Frame marco;

public void start() {
marco = new Frame();
try {
URL u = new URL(getDocumentBase(),"foto.gif");
imagen = marco.getToolkit().getImage(u);
//Las siguientes dos lineas son irrelevantes
marco.setBounds(100,200,200,100);
marco.setVisible(true);
}
catch (Exception ex) {
System.out.println("Excepcion "+ex);
}
}

public void paint(Graphics g) {
if (imagen != null) g.drawImage(imagen,0,0,this);
}
}


Como el componente pertenece a un applet sigue sujeto a las restricciones de un
applet. Si cambias

URL u = new URL(getDocumentBase(),"foto.gif");


por

URL u = new URL("http://java.sun.com/graphics/people.gif");

Obtendrás de nuevo una excepción:


Espero que tod esto te haya servido de ayuda. Si tienes más dudas sobre el asunto
nos vemos aquí
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Es esto lo que querías?

Publicado por climentc (25 intervenciones) el 14/01/2001 00:00:00
Lo que quiero es algo asi:

class MiApplet extends Applet {
init() {
add(new MiClasse());
}
}

class MiClasse extends Canvas {
Image image;

MiClasse() {
image = CogeImagen(imagen.gif);
}

public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una aplicacion es más libre

Publicado por Pedro Pablo (11 intervenciones) el 18/01/2001 00:00:00
Hola!
A mí también me interesaba esta respuesta, y he utilizado lo que has puesto y me ha funcionado.
Sin embargo tengo un problema. Yo necesito cargar la imagen y saber su tamaño. El problema es que si trato de obtenerlo después de solicitar su carga, me devuelve el tamaño -1:

image = Toolkit.getDefaultToolkit().getImage(imageUrl);
w = _image.getWidth(this);

He intentado usar un MediaTracker para esperar, pero no sé si es que no lo hago bien o qué, pero sigue dandome -1 como dimensiones:

image = Toolkit.getDefaultToolkit().getImage(imageUrl);
MediaTracker tracker = new MediaTracker(null);
tracker.addImage(image, 1);
try {
tracker.waitForAll();
} catch (Exception e) {}
w = image.getWidth(this);

¿Puedes ayudarme?
¡Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una aplicacion es más libre

Publicado por Jose (53 intervenciones) el 19/01/2001 00:00:00
Creo que el problema que tienes se debe a que no has "enganchado" el MediaTracker
con el componente, es decir, cambia

MediaTracker tracker = new MediaTracker(null);

por

MediaTracker tracker = new MediaTracker(this);

Para que entiendas la razón debes leer la documentación sobre el constructor de MediaTracker:

public MediaTracker(Component comp)

Creates a media tracker to track images for a given component.
Parameters:
comp - the component on which the images will eventually be drawn.
(el componente en el cual las imagens serán dibujadas)

Si lo dejas con null te funcionara bien unas veces y otras no, ya que se puede producirse un desfase
Puedes comprobar con

MediaTracker tracker = new MediaTracker(null);
tracker.addImage(image, 1);
try {
tracker.waitForAll();
} catch (Exception e) {}
while ( w = image.getWidth(this)<0)
System.out.println(w);
System.out.println( image.getWidth(this));

Observaras que tarde o temprano te da la respuesta adecuada

Resumiendo

new MediaTracker(this)

te quita el problema

Hasta otra.



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una aplicacion es más libre

Publicado por Jose (53 intervenciones) el 19/01/2001 00:00:00
ERRATA:

Se me ha "deslizado un gazapo". Cambiar

while ( w = image.getWidth(this)<0)

por

while ( ( w = image.getWidth(this)) <0)

(Supongo que lo habrías visto tú solo, pero por si las moscas)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cargando desde un Applet o un Frame

Publicado por kristy (1 intervención) el 25/07/2011 01:03:38
este lo compile y no me muestra la imagen. q puedo hacer
xq cree una carpeta en el escritorio y guarde la imagen como GIF .. luego compile este codigo claro modificando el nombre de la imagen y cuando lo compilo me sale la ventana en blanco no me muestra la imagen q puedo Hacer :S
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar imagen desde una clase que no sea un app

Publicado por edwin (1 intervención) el 28/06/2007 00:29:53
para insertar una imagen celular y que realize todo lo que el celular hace
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cargar imagen desde una clase que no sea un app

Publicado por richard (1 intervención) el 18/05/2007 22:04:22
hola amigo no me quedo muy claro tu procedimiento para cargar imagen, antes de nada me gustaria aclarar una duda, en todos los ejemplos que veo de como carga una imagen, siempre ponen el nombre del archivo, pero nunca la ubicacion del archivo, por ejemplo si yo quiero cargar la imagen desde mi, a un programa que quiero hacer en java ¿cual sería el procedimiento adecuado?
gracias........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar