#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
все время.