Toolkit.getDefaultToolkit().getImage
No puedo mostrar los comentarios de la "ayuda" en mi aplicación (ya expliqué mi problema y creía haber recibido la solución de un chat.bot, pero al final no funciona).
Lo que hago ahora, que es más preciso que antes:
Image image_ecran=createImage(1140,800);System.out.println(" image_ecran* "+image_ecran);
gTampon_ecran=image_ecran.getGraphics();
nom=javadir+"appli_puits_puits_de_potentiel.jpg";//nombre del comentario y ubicación javadir en mi disco, verificar N veces
image_ecran=Toolkit.getDefaultToolkit().getImage(nom);
System.out.println(" image_ecran *** "+image_ecran);
Tracker tracker=new MediaTracker(this);tracker.addImage(image_ecran,0);
try {tracker.waitForID(0);}
catch (InterruptedException e) {
System.out.println(" image2 no llega?");
}
int imagew=image_ecran.getWidth(this);
int imageh=image_ecran.getHeight(this);
System.out.println(" ****imagew "+imagew+" imageh "+imageh);
Resultado: imagew e imageh valen -1 ambos, en lugar de 1140 y 800
y la dirección de image_ecran es sun.awt.image.ToolkitImage@233c0b17 en lugar de BufferedImage@2ac1fdc4 antes de la llamada al toolkit.
y evidentemente no tengo el comentario deseado en el gTampon_ecran (acoplado a image_ecran). De hecho, el tracker no me parece responsable. Lo que está en juego, creo, es la diferencia de dirección de la imagen antes y después de la llamada al toolkit. Un poco como si hubiera pedido un destornillador en la caja de herramientas (el toolkit) y me hubieran dado un martillo.
He buscado en todas las direcciones este problema, pero siempre llego a la misma conclusión.
De antemano GRACIAS.
1 respuesta
-
Hola,
Partí de la conversación inicial (enlace) para entender un poco mejor el objetivo del programa.
Sin haber obtenido todas mis respuestas aún --', ya he podido identificar 2 problemas en el código:
- image_ecran fue creado como buffer 1140x800 y luego reemplazado por el valor de Toolkit.getImage(nom)
- gTampon_ecran seguía asociado a la antigua imagen y dibujaba en el antiguo buffer en lugar de en la nueva imagen image_ecran
- Las valores Width/Height a -1 procedían de la carga KO por Toolkit
Los cambios realizados:
- Toolkit.getImage pasa a ImageIO.read pero carga el JPG en un BufferedImage
- la imagen cargada en una variable más clara image_depuis_nom
- revisión del proceso de escritura y de gestión de buffers
- MediaTracker: simplemente preferí prescindir de él para simplificar
- de regalo, porque estamos aquí para buenas prácticas, File para controles del archivo
- dejé las variables en snake_case pero se prefiere camelCase
- comenté un mínimo para aclarar, eso también es buena práctica
- el marcado de código también, es mejor para leer. Sin embargo, lo habías hecho bien en tu publicación anterior --'
//nombre del comentario y ubicación javadir en mi disco, verificado N veces File fichier = new File(javadir, "appli_puits_puits_de_potentiel.jpg"); /* * fichero JPG * | ImageIO.read() * \|/ gTampon_ecran * image_depuis_nom BufferedImage / * |drawImage() / * \|/ |/_ * +--------------------------+ * | image_ecran 1140 x 800 | * +--------------------------+ */ try { System.out.println(" ****Apertura del archivo : " + fichier.getAbsolutePath()); System.out.println(" ****¿Existe el archivo? : " + fichier.exists()); // Utilización de un BufferedImage desde ImageIO BufferedImage image_depuis_nom = ImageIO.read(new File(nom)); if (image_depuis_nom == null) System.out.println(" ****Archivo encontrado, imagen KO"); else { int imagew=image_depuis_nom.getWidth(); int imageh=image_depuis_nom.getHeight(); System.out.println(" ****ancho de imagen : " + imagew + ", alto de imagen : " + imageh); // Reemplazo del buffer image_ecran. // Se considera ya definido en otra parte y se sobrescribe el valor. // Si no está definido, definir. Poner BufferedImage al inicio de la línea. image_ecran = new BufferedImage(1140, 800, BufferedImage.TYPE_INT_RGB); // Graphics asociado al buffer gTampon_ecran = image_ecran.getGraphics(); // Dibujar image_depuis_nom en el buffer gTampon_ecran reemplazado por el valor de image_ecran gTampon_ecran.drawImage(image_depuis_nom, 0, 0, null); } } catch (IOException e) { System.out.println(" ****imagen2 no llega? causa : " + e.getMessage()); }Mantente al tanto ;-)
Los MAMAA no tienen petróleo pero sí datos!
¿Sientes mi Big Data?
Sacrifica algunas libertades para mayor seguridad y las perderás TODAS.
ALL YOUR DATABASE ARE BELONG TO US