ImageJ API:如何使用缩放和拖动来显示图像以滚动图像窗口中活动的要素?

时间:2015-10-22 12:12:08

标签: java imagej

如果我使用斐济应用程序打开图像,那么图像将显示在一个窗口中,我可以使用+和 - 键放大和缩小,我也可以按住空格键并用鼠标拖动缩放图像滚动浏览它。

我想使用ImageJ API在java应用程序中实现相同的功能。如果我使用以下代码(取自here)打开图像,则图像显示在与斐济案例相同类型的窗口中,但缩放和拖动以滚动要素在窗口中无效。

Opener opener = new Opener();  
ImagePlus imp = opener.openImage("/path/to/image.tif");  
imp.show();

有人可以建议如何激活这两个功能吗?对我来说,它们看起来像每个人都使用的标准功能,所以我希望通过ImageJ API可以轻松获得它们的激活。但是我在API specs中找不到任何提示。

据我了解,上述代码中的电话imp.show();等同于以下内容:

ImageWindow imageWindow = new ImageWindow(imp);
imageWindow.setVisible(true);

如果是这样,这个ImageWindow类应该有一些方法可以确保激活缩放和拖动滚动。有没有人有线索?

或者,也许有人可以共享指向斐济源代码的直接链接,其中实现了这些确切的功能?应该是here吗?如果是,那么到底在哪里?

2 个答案:

答案 0 :(得分:1)

也许您应该更多地关注ImageJ source code。我假设这是针对ImageJ1的。我的猜测是当主要gui加载到ImageJ

时设置了键绑定

下载了imagej1源代码并执行grep缩放后,我找到了

./IJ_Props.txt:zoom01="In [+]",ij.plugin.Zoom("in")
./IJ_Props.txt:zoom02="Out [-]",ij.plugin.Zoom("out")
./IJ_Props.txt:zoom03="Original Scale[4]",ij.plugin.Zoom("orig")
./IJ_Props.txt:zoom04="View 100%[5]",ij.plugin.Zoom("100%")
./IJ_Props.txt:zoom05="To Selection",ij.plugin.Zoom("to")
./IJ_Props.txt:zoom06="Scale to Fit",ij.plugin.Zoom("scale")
./IJ_Props.txt:zoom07="Set... ",ij.plugin.Zoom("set")

尝试使用ImageJ类启动主GUI。或者,查看如何在该类中设置密钥监听器。

您感兴趣的ImageJ代码中有多个位置。例如,第388行是KeyPressed方法的开头。

在这些操作之后,doCommand methdod会调用相应的插件。

答案 1 :(得分:0)

我解决了。正如我所料,有一种简单的方法可以激活缩放和拖动以在Java程序中滚动ImageJ的功能。

正如我现在看到的,ImageJ的大多数功能都是作为ij.plugin.*下的插件实现的。

要在Java程序中激活所需的ImageJ功能,您需要(1)找到与ij.plugin.*包中的功能对应的插件,(2)在您的代码中调用插件,以及(3)将从标准ImageJ分发中获取的IJ_Props.txt文件放到运行java .jar可执行文件的目录中(IJ_Props.txt文件似乎包含许多可用ImageJ插件使用的设置)。

因此,在我们的例子中,我们需要在java代码中激活ij.plugin.Zoom插件:

//Launch ImageJ in NO_SHOW mode: Run embedded and invisible in another application.
ImageJ imageJApplication = new ImageJ(2);

Opener opener = new Opener();  
String imageFilePath = "path/to/your/image.png";
ImagePlus imp = opener.openImage(imageFilePath);
imp.show();
IJ.runPlugIn("ij.plugin.Zoom", null);

执行此代码时,我们会激活ij.plugin.Zoom插件,并且两个所需的功能(缩放和拖动以滚动)将在显示图像的窗口中起作用。我们还获得了窗口左上角显示图像区域的传统ImageJ缩略图视图。