Что делает ImageIO при чтении файла? - PullRequest
1 голос
/ 10 марта 2019

Я немного смущен ImageIO.read(file).Когда я пытаюсь прочитать файл .png в BufferedImage, по крайней мере, в macOS, фокус переходит на новое приложение, названное в честь моего основного класса.Это появляется в строке меню.Это происходит даже тогда, когда я запускаю Java из командной строки.

enter image description here

Раздражает то, что он перемещает фокус из моей IDE, и у меня естьчтобы вернуться к нему вручную.

Я посмотрел на источник ImageIO.read(file).Я обнаружил, что он вызывает ImageIO.createImageInputStream(file), и именно это вызывает такое поведение.

Мой вопрос: что на самом деле делает ImageIO, почему мой основной класс отображается в строке меню, когда он просто загружает информацию вобъем памяти.И самое главное, как я могу избежать этого?

Ниже кода, чтобы показать проблему.Для проверки используйте любой .png.

package misc;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import java.io.File;
import java.io.IOException;

public class ReadImageTest {
    public static void main(String[] args) {
        try {
            File file = new File("out/production/resources/picture.png");
            long time = System.currentTimeMillis();
            ImageInputStream stream = ImageIO.createImageInputStream(file);
            long delay = System.currentTimeMillis() - time;
            System.out.println("stream: " + stream.length());
            System.out.println("time: " + delay/1000.0);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1 Ответ

1 голос
/ 10 марта 2019

Использование безголового режима в платформе Java SE описывает, что такое безголовый режим и как его правильно использовать.

Безголовый режим - это конфигурация системы, в которой устройство отображения, не хватает клавиатуры или мыши. Звучит неожиданно, но на самом деле вы можете выполнять различные операции в этом режиме, даже с графическими данными.

Вы можете включить его, добавив нижеприведенную опцию в вашу программу:

-Djava.awt.headless=true

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...