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 缩略图视图
如果我用斐济应用程序打开图片,那么图片显示在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
下载 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.