反向问题是:
如何从ImageJ宏调用/执行java程序?
每当我写imagej时,我都会提到斐济。
当然,一个简单的解决方案是从java字符串创建一个.ijm并使用.ijm作为参数的系统调用来调用imagej,但我寻找更好的解决方案。或者.ijm指令可以转换成java调用,但不是很方便(当.jvm足以完成这项工作时,保持这种格式非常方便)。
为什么有用?它可以用于例如以混淆的方式分发.ijm宏 - 使用户更难以提取宏。只有在提供正确的密码等情况下,才能解密包含.ijm指令的字符串。感谢您的任何建议!
答案 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中运行