如何从ImageJ Java插件中将参数传递给ImageJ宏?

时间:2014-06-06 21:19:51

标签: java plugins macros imagej

我试图将一个参数从ImageJ插件传递给imageJ宏。基本上,我从我的ImageJ Java插件中调用宏来打开一堆图像,并希望能够将整数值传递给插件,以便能够将它附加到文件路径的末尾。

现在我可以打开一堆图像,对插件内的活动图像执行我需要做的任何操作,然后关闭图像堆栈,这样我就可以打开下一叠图像了。

这是我在Java插件中所做的基本格式:

(general import stuff)

import ij.plugin.Macro_Runner;

Macro_Runner test_runner = new Macro_Runner();
test_runner.run("OpenFrameSequence.ijm");
// pixel analysis
test_runner.run("closeMacro.ijm");**

这是Macro OpenFrameSequence.ijm:

var x = 0;
x = getNumber("Bias Frame Sequence Length:", x); 
run("Image Sequence...", "open=[C:\\Documents and Settings\\Developer\\Desktop\\PLPT_IMAGEJ_PICS\\BiasFrameSequence\\1.jpg] number=x sort use");

这是Macro closeMacro.imj

close();

上面插件部分的第四行是我遇到的问题,我可以调用另一个函数runMacro();,这里定义了:

http://rsbweb.nih.gov/ij/developer/api/ij/plugin/Macro_Runner.html

所以我想做的是:

int i = 1;

test_runner.runMacro("OpenFrameSequence.ijm", i);

然后,在宏中,取i的值并将其用作变量。 runMacro()函数似乎没有工作(我也尝试发送一个String代替int i)。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

Macro_Runner#runMacro(String macro, String arg)的javadoc中,它说:

  

在当前线程上运行指定的宏。宏可以检索   通过调用getArgument()宏可选的字符串参数   功能。返回宏返回的字符串值,如果是,则返回null   宏不返回值,或" [aborted]"如果宏被中止   由于错误。

所以下面的Javascript(和等效的Java)按预期工作:

importClass(Packages.ij.plugin.Macro_Runner);

var i = 42;
mr = new Macro_Runner();
mr.runMacro("print(getArgument());", i);

如果要运行宏文件而不是原始宏代码,则应使用Macro_Runner#runMacroFile

test_runner.runMacroFile("OpenFrameSequence.ijm", i);
相关问题