【问题标题】:Is there a way to call imagej macro (.ijm) from java (i.e. have macro stored as string and execute it using a java control of imagej)?有没有办法从java调用imagej宏(.ijm)(即将宏存储为字符串并使用imagej的java控件执行它)?
【发布时间】:2013-12-13 19:54:39
【问题描述】:

问题是相反的:

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

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

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

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

【问题讨论】:

    标签: java macros imagej


    【解决方案1】:

    使用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

    【讨论】:

    • 非常感谢。这听起来完全是我的解决方案。我会尽快测试它。是的,我知道 Java 可以被反编译,无论如何它们是一些让它变得不那么琐碎和方便的方法;)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2022-10-01
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      相关资源
      最近更新 更多