Come leggi un'immagine in Java quando Toolkit.getDefaultToolkit () genera un AWTError?
Domanda
Sto leggendo i file di immagini in Java usando
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);
Su alcuni sistemi questo non funziona, ma genera un AWTError lamentandosi di sun / awt / motif / MToolkit.
In quale altro modo è possibile creare un oggetto java.awt.Image da un file di immagine?
Soluzione
Ho letto le immagini usando ImageIO .
Image i = ImageIO.read(InputStream in);
Anche javadoc offrirà ulteriori informazioni.
Altri suggerimenti
Esistono diversi metodi statici in ImageIO che consentono di leggere immagini da fonti diverse. I più interessanti nel tuo caso sono:
BufferedImage read(ImageInputStream stream)
BufferedImage read(File input)
BufferedImage read(InputStream input)
Ho controllato all'interno del codice. Utilizza la classe astratta ImageReader e sono disponibili tre implementatori: JPEGReader. PNGReader e GIFReader. Queste classi e BufferedImage non usano apparentemente alcun metodo nativo, quindi dovrebbe sempre funzionare.
Sembra che AWTError che hai sia perché stai eseguendo java in una configurazione senza testa, o che il toolkit di Windows abbia qualche tipo di problema. Senza guardare l'errore specifico è difficile da dire però. Questa soluzione ti permetterà di leggere l'immagine (probabilmente), ma a seconda di cosa vuoi farne, AWTError potrebbe essere lanciato in seguito mentre provi a visualizzarlo.
Su alcuni sistemi aggiungendo " -Djava.awt.headless = true " come parametro java può aiutare.