ImageJ API:如何在图像 window 中显示具有缩放和拖动滚动功能的图像?

ImageJ API: how to display an image with zoom and drag to scroll features active in the image window?

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

我想在 java 应用程序中使用 ImageJ API 实现相同的功能。如果我使用以下代码(取自 here)打开图像,则图像显示为与斐济情况相同的 window 类型,但缩放和拖动滚动功能未激活在 window.

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 class 的一些方法可以确保激活缩放和拖动以滚动。有人知道吗?

或者,也许有人可以直接 link 分享实现了这些确切功能的 Fiji 源代码?应该是 here 吗?如果是,那么具体在哪里?

也许您应该多看看 ImageJ source code。我假设这是针对 ImageJ1 的。我的猜测是当在 ImageJ class

中加载主 gui 时设置键绑定

下载 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 class 启动主 GUI。或者看看 class.

中的关键侦听器是如何设置的

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

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

我解决了。正如我所料,在 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 插件,所需的功能(缩放和拖动以滚动)将在显示图像的 window 中发挥作用。我们还得到了 window.

左上角显示图像区域的传统 ImageJ 缩略图视图