使用来自特定目录Java的文件

时间:2016-01-25 13:49:29

标签: java macros imagej

我想用Java为Image J编写一个宏 在尝试使用特定文件夹中的图像时,我在第一行中出错,我不知道如何解决它。

源代码:

for (File file : new File("E:\\Ghent\\magnel\\Bjorn\\cap 1").listFiles()) {

  if (file.isFile() && file.getName().toLowerCase().contains("cap")) {
    //imageCalculator("Subtract create", "cap run_0001.fits","DCBB.fits");
    imageCalculator("Subtract create",file.getName(),"DC.fits")
    //run("Image Calculator...", "image1=[cap run_0001.fits] operation=Subtract image2=DCBB.fits create");

    imageCalculator("Divide create", "Result of cap","DEN");
    //run("Image Calculator...", "image1=[Result of cap] operation=Divide image2=[DEN] create");
    saveAs(file.getName() . "_AD", "C:\\Users\\Nati\\Desktop\\prueba macro\\"_AD".tif");

2 个答案:

答案 0 :(得分:0)

问题应该是使用\。 尝试使用/\\

e.g。

new File("E:/Ghent/magnel/Bjorn/cap 1")

反斜杠是Java和许多其他语言中的特殊字符,您可以在java docs中阅读。

答案 1 :(得分:0)

您正在代码中混合使用 Java ImageJ1 macro language

发生错误是因为您尝试将代码作为ImageJ宏运行,但第一行包含Java语法。

您有两种选择:

  • 也将文件系统逻辑转换为IJ1宏。有关如何处理包含文件的文件夹的示例,请参阅here
  • 编译并运行您的代码作为Java插件。您可以在Java模式下使用Macro recorder来获取所需的命令,例如对于图像计算器:

    ImageCalculator ic = new ImageCalculator();
    ImagePlus imp1 = IJ.openImage(file.getName());
    ImagePlus imp2 = WindowManager.getImage("DC.fits");
    ImagePlus imp3 = ic.run("Subtract create", imp1, imp2);