有没有办法从java调用imagej宏(.ijm)(即将宏存储为字符串,并使用imagej的java控件执行)?

有没有办法从java调用imagej宏(.ijm)(即将宏存储为字符串,并使用imagej的java控件执行)?,java,macros,imagej,Java,Macros,Imagej,问题反过来是: 如何从ImageJ宏调用/执行java程序 每当我写imagej时,我指的是斐济 当然,一个简单的解决方案是从java字符串创建一个.ijm,并使用带有.ijm作为参数的系统调用调用imagej,但我会寻找更好的解决方案。或者,可以将.ijm指令转换为java调用,但这并不十分方便(当.jvm足以完成作业时,将其保持为这种格式是非常方便的) 为什么它有用?例如,它可用于以模糊的方式分发.ijm宏-使用户更难提取宏。包含.ijm指令的字符串只能在提供正确密码等情况下解密。感谢您的任

问题反过来是:

如何从ImageJ宏调用/执行java程序

每当我写imagej时,我指的是斐济

当然,一个简单的解决方案是从java字符串创建一个.ijm,并使用带有.ijm作为参数的系统调用调用imagej,但我会寻找更好的解决方案。或者,可以将.ijm指令转换为java调用,但这并不十分方便(当.jvm足以完成作业时,将其保持为这种格式是非常方便的)


为什么它有用?例如,它可用于以模糊的方式分发.ijm宏-使用户更难提取宏。包含.ijm指令的字符串只能在提供正确密码等情况下解密。感谢您的任何建议

使用
ij.ij.runMacro(String)
方法

以下是一个例子:

import ij.IJ;
import ij.plugin.PlugIn;

public class Run_Macro implements PlugIn {
    @Override
    public void run(final String arg) {
        final String macro =
            "run(\"Clown (14K)\");\n" +
            "run(\"Make Binary\");\n";
        IJ.runMacro(macro);
    }
}

不过,有一点关于混淆的警告:Java是。

如果我错了,请纠正我,但是可以调用IJ.runMacroFile来引用宏文件夹中给定的宏文本文件

public void My_Macro() {
        IJ.runMacroFile("My_Macro.txt");
}

但是我不知道是否可以在宏文件夹之外运行宏,例如从.jar中运行宏

非常感谢。这听起来正是我的解决方案。我会尽快测试它。是的,我知道Java是可以反编译的,不管怎样,它们是一些让它不那么琐碎和方便的方法;)