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