¿Cómo se lee una imagen en Java cuando Toolkit.getDefaultToolkit() arroja un AWTError?

StackOverflow https://stackoverflow.com/questions/119857

  •  02-07-2019
  •  | 
  •  

Pregunta

Estoy leyendo archivos de imagen en Java usando

java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);

En algunos sistemas esto no funciona, sino que arroja un error AWTError quejándose de sun/awt/motif/MToolkit.

¿De qué otra manera puedes crear un objeto java.awt.Image a partir de un archivo de imagen?

¿Fue útil?

Solución

Leo imágenes usando ImagenIO.

Image i = ImageIO.read(InputStream in);

El javadoc también ofrecerá más información.

Otros consejos

Existen varios métodos estáticos en ImageIO que permiten leer imágenes de diferentes fuentes.Los más interesantes en su caso son:

BufferedImage read(ImageInputStream stream) 
BufferedImage read(File input)
BufferedImage read(InputStream input)

Revisé el interior del código.Utiliza la clase abstracta ImageReader y hay tres implementadores:Lector JPEG.PNGReader y GIFReader.Estas clases y BufferedImage aparentemente no utilizan ningún método nativo, por lo que siempre debería funcionar.

Parece que el AWTError que tienes se debe a que estás ejecutando Java en una configuración sin cabeza, o que el kit de herramientas de Windows tiene algún tipo de problema.Sin embargo, es difícil decirlo sin mirar el error específico.Esta solución le permitirá leer la imagen (probablemente), pero dependiendo de lo que quiera hacer con ella, es posible que se genere el error AWTError más tarde al intentar mostrarla.

En algunos sistemas, puede ser útil agregar "-Djava.awt.headless=true" como parámetro de Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top