【问题标题】:ImageJ API: how to display an image with zoom and drag to scroll features active in the image window?ImageJ API:如何在图像窗口中显示缩放和拖动以滚动功能的图像?
【发布时间】:2015-10-28 00:38:05
【问题描述】:

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

我想使用 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 吗?如果是,那么具体在哪里?

【问题讨论】:

    标签: java imagej


    【解决方案1】:

    也许您应该更多地关注 ImageJ source code。我假设这是针对 ImageJ1 的。我的猜测是在ImageJ 类中加载主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 类启动主 GUI。或者查看该类中的键侦听器是如何设置的。

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

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

    【讨论】:

    • 谢谢,这是获得答案的有用方向!
    【解决方案2】:

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

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

    要在您的 Java 程序中激活所需的 ImageJ 功能,您需要 (1) 找到与 ij.plugin.* 包中的功能相对应的插件,(2) 在代码中调用插件,以及 (3) 将IJ_Props.txt 文件取自标准 ImageJ 发行版到您运行 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 缩略图视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2016-10-01
      • 2015-10-12
      相关资源
      最近更新 更多