2012-10-12 81 views
0

我在ImageJ中编写了一个宏,在BMP图像文件列表上运行批量“测量”。我使用headless.jar以无头模式在远程Linux机器上运行代码。ImageJ - 即使遇到错误,如何继续批处理

每当ImageJ在列表中读取/加载图像时遇到错误或异常,它都会退出该过程。因此,我必须不断监视进程并手动强制ImageJ跳过文件。

有没有一种方法可以强制ImageJ继续执行该过程,即使遇到了错误/异常?并可能在日志或其他文件中报告文件名?

+0

这听起来像你应该考虑重写你的宏作为Java插件。这会让您选择执行所需的错误处理。 –

回答

0

不可能在ImageJ宏语言中显式处理异常。但是,在进行有问题的宏调用之前,可以通过检查前提条件等来防范某些类型的异常。

例如,如果您的文件列表中包含不存在的文件,则可以使用File.exists(path)[1]确保文件存在,然后再尝试将其打开。

当然,并不是所有的错误条件都可以通过这种方式很容易地检查(例如格式不正确的BMP),所以我同意medPhys-pl将您的宏重写为Imagej插件是最完整的解决方案。使用宏记录器(Plugins > Macros > Record)设置为以插件模式记录而非宏记录可以很好地开始。一旦你有相关的命令来执行,您可以通过使用FijiScript Editor它们打包成一个插件很容易:

  1. File > New > Script
  2. Language > Java
  3. Templates > Java > Bare PlugIn
  4. 你的命令粘贴到run方法。

有关编写ImageJ插件的更多详细信息,请参阅斐济wiki的Introduction into Developing Plugins

相关问题