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

  1. 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