Как прочитать изображение на Java, когда Toolkit.getDefaultToolkit() выдает AWTError?
Вопрос
Я читаю файлы изображений на Java, используя
java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);
В некоторых системах это не работает, вместо этого выдается ошибка AWTError с сообщением о sun/awt/motif/MToolkit.
Как еще можно создать объект java.awt.Image из файла изображения?
Решение
Я читаю изображения, используя ИзображениеIO.
Image i = ImageIO.read(InputStream in);
Javadoc также предложит дополнительную информацию.
Другие советы
В ImageIO есть несколько статических методов, позволяющих читать изображения из разных источников.Самое интересное в вашем случае:
BufferedImage read(ImageInputStream stream)
BufferedImage read(File input)
BufferedImage read(InputStream input)
Я проверил внутри кода.Он использует абстрактный класс ImageReader и имеет три реализации:JPEGReader.PNGReader и GIFReader.Эти классы и BufferedImage, очевидно, не используют никаких собственных методов, поэтому они всегда должны работать.
Похоже, что ошибка AWTError связана с тем, что вы используете Java в автономной конфигурации или с набором инструментов Windows возникла какая-то проблема.Трудно сказать, не глядя на конкретную ошибку.Это решение позволит вам прочитать изображение (вероятно), но в зависимости от того, что вы хотите с ним сделать, ошибка AWTError может быть выдана позже, когда вы попытаетесь его отобразить.
В некоторых системах может помочь добавление «-Djava.awt.headless=true» в качестве параметра Java.