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

时间:2013-12-13 19:54:39

标签: java macros imagej

反向问题是:

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

每当我写imagej时,我都会提到斐济。

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

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

2 个答案:

答案 0 :(得分:2)

使用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是notoriously easy to decompile

答案 1 :(得分:0)

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

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

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