ImageJ宏创建新文件夹并将输出保存在新文件夹中

时间:2016-03-22 01:55:54

标签: imagej imagej-macro

我将在ImageJ留言板上找到的以下宏修改为批量分割通道,创建一个名为“OneChannel”的新文件夹并将输出保存在新文件夹中。代码按预期工作:它创建新文件夹,它分割通道,并以新名称保存它们。唯一的问题是它将新文件保存在与原件相同的文件夹中,然后我必须手动将它们拖到新创建的文件夹中。我试过搞乱这个,但我无法让它发挥作用。任何输入都会受到赞赏,我对Java很新。

dir=getDirectory("Choose a Directory"); 
print(dir); 
splitDir= dir + "OneChannel"; 
print(splitDir); 
File.makeDirectory(splitDir); 
list = getFileList(dir); 

for (i=0; i<list.length; i++) { 
     if (endsWith(list[i], ".tif")){ 
               print(i + ": " + dir+list[i]); 
             open(dir+list[i]); 
             imgName=getTitle(); 
         baseNameEnd=indexOf(imgName, ".tif"); 
         baseName=substring(imgName, 0, baseNameEnd);
         run("Split Channels"); 
         selectWindow(imgName + " (blue)"); 
         close(); 
         selectWindow(imgName + " (green)"); 
         saveAs("Tiff",  splitDir + baseName +  "-AnkG.tif"); 
         close(); 
         selectWindow(imgName + " (red)");
         run("Close All"); 
     } else {
     write("One Channel Conversion is Complete");
     }
} 

1 个答案:

答案 0 :(得分:1)

我实际想出来了。在第3行,我需要输入“/ OneChannel /”。我一做到这一点就行了。我想我之前没有指定真正的文件路径,但现在以下工作正常。

dir=getDirectory("Choose a Directory"); 
print(dir); 
splitDir= dir + "/OneChannel/"; // This was my error, I left out "//" surrounding OneChannel
print(splitDir); 
File.makeDirectory(splitDir); 
list = getFileList(dir); 

for (i=0; i<list.length; i++) { 
     if (endsWith(list[i], ".tif")){ 
               print(i + ": " + dir+list[i]); 
             open(dir+list[i]); 
             imgName=getTitle(); 
         baseNameEnd=indexOf(imgName, ".tif"); 
         baseName=substring(imgName, 0, baseNameEnd);
         run("Split Channels"); 
         selectWindow(imgName + " (blue)"); 
         close(); 
         selectWindow(imgName + " (green)"); 
         saveAs("Tiff",  splitDir + baseName "-AnkG.tif"); 
         close(); 
         selectWindow(imgName + " (red)");
         run("Close All"); 
     } else {
     write("One Channel Conversion is Complete");
     }
}