我在 ImageJ 中编写了一个宏来在 BMP 图像文件列表上运行批量“测量”。我正在使用 headless.jar 以无头模式在远程 linux 机器上运行代码。
每当 ImageJ 在读取/加载列表中的图像时遇到错误或异常时,它都会退出该过程。因此,我必须不断监控该过程并手动强制 ImageJ 跳过该文件。
有没有一种方法可以强制 ImageJ 继续该过程,即使它遇到错误/异常?并报告文件名可能在日志或其他文件中?
我在 ImageJ 中编写了一个宏来在 BMP 图像文件列表上运行批量“测量”。我正在使用 headless.jar 以无头模式在远程 linux 机器上运行代码。
每当 ImageJ 在读取/加载列表中的图像时遇到错误或异常时,它都会退出该过程。因此,我必须不断监控该过程并手动强制 ImageJ 跳过该文件。
有没有一种方法可以强制 ImageJ 继续该过程,即使它遇到错误/异常?并报告文件名可能在日志或其他文件中?
在 ImageJ 宏语言中无法显式处理异常。但是,您可以通过在进行有问题的宏调用之前检查先决条件等来防止某些类型的异常。
例如,如果您的文件列表包含不存在的文件,您可以使用File.exists(path)
[1]确保文件存在,然后再尝试打开它。
当然,并非所有错误情况都可以通过这种方式轻松检查(例如,格式错误的 BMP),因此我同意medPhys-pl的观点,即将您的宏重写为 Imagej 插件是最完整的解决方案。Plugins > Macros > Record
您可以使用设置为以插件模式而不是宏录制的宏录制器 ( ) 来获得良好的开端。一旦你有相关的命令要执行,你可以使用Fiji的Script Editor轻松地将它们打包到一个插件中:
File > New > Script
Language > Java
Templates > Java > Bare PlugIn
run
方法中。有关编写 ImageJ 插件的更多详细信息,请参阅 Fiji wiki 的开发插件简介。