Проверьте, открыты ли изображения, и получите подробную информацию о каждом изображении из экземпляра ImagePlus

#java #imagej

#java #imagej

Вопрос:

Я работаю над написанием плагинов для ImageJ. Мне нужна помощь в том, как проверить, открыто ли изображение или нет. Для текущего открытого изображения у меня есть экземпляр ImagePlus. Но методы внутри imageplus, похоже, не предоставляют никаких подробностей об открытых / активных изображениях. Ниже приведен текущий код, который я использую для отображения изображений, но я не уверен, как проверить, открыты изображения или нет.

 Opener imagejOpener = new Opener();
String imageFilePath = path;
ImagePlus imagePlus = imagejOpener.openImage(imageFilePath);
imagePlus.show();
  

Есть ли у нас какие-либо статические классы или методы, которые могут просто проверить WindowManager или что-то еще, чтобы решить, открыты ли какие-либо изображения или нет.

Комментарии:

1. Что вы подразумеваете под «открытыми изображениями»?

2. Я имею в виду, я хочу проверить, открыты ли у нас уже какие-либо изображения в Imagej. Изображения можно открывать любым способом, либо с помощью file-> open, либо программно, как я показал вам выше imagejopener.openImage(); .

3. Если вы открываете и закрываете изображения программно, почему бы вам программно не сохранить информацию о том, какие изображения открыты в данный момент, например, список путей, содержащий singleton?

4. Да, это нормально, если пользователь открывает файлы с помощью моего плагина, а затем редактирует его. Но у меня также есть несколько случаев, когда пользователь может открывать файлы, используя 1-ю опцию (файл-> открыть). В таком случае мой плагин должен обнаруживать открытые изображения (если таковые имеются) и действовать соответствующим образом.

Ответ №1:

Проверьте javadoc ij.WindowManager класса. В нем есть следующие статические методы, которые могут быть вам полезны:

static int getImageCount() Возвращает количество открытых изображений.

static int getWindowCount() Возвращает количество открытых окон изображения.

static int[] getIDList() Возвращает список идентификаторов открытых изображений.

и чтобы получить текущее изображение в качестве ImagePlus экземпляра:

static ImagePlus getCurrentImage()

При написании плагинов вам лучше использовать:

 import IJ;
ImagePlus imp = IJ.getImage();
  

Смотрите также ij.IJ вспомогательный класс.

Надеюсь, это поможет.

Комментарии:

1. Спасибо за своевременную помощь. Как и предлагалось, статические методы if IJ class действительно помогли мне. Я извлек экземпляр ImagePlus IJ.getImage() текущего изображения, а затем получил дополнительную информацию о нем с помощью imp.getTitle и относительных методов.

2. Я также пытался использовать WindowManager, но, похоже, в моем случае это не сработало. Я не уверен, почему. Статические методы WindowManager.getImage() и WindowManager.getImageCount() WindowManager дали мне null все время.