Я немного смущен ImageIO.read(file)
.Когда я пытаюсь прочитать файл .png в BufferedImage, по крайней мере, в macOS, фокус переходит на новое приложение, названное в честь моего основного класса.Это появляется в строке меню.Это происходит даже тогда, когда я запускаю Java из командной строки.
Раздражает то, что он перемещает фокус из моей 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();
}
}
}