我正在ImageJ中开发一个宏,它将循环一系列标准格式的图像,并将它们合并为两个不同的通道。我写了宏,但我需要它能够接受不同格式的整数作为文件名的一部分。
这是文件名格式。
图1:aSMA neut_Plate_D_p00_0_B01f00d0.TIF
图2:aSMA neut_Plate_D_p00_0_B01f00d1.TIF
B 01是组织对应的“孔”的ID。我需要一个可以接受“aSMA neut_Plate_D_p00_0_B01f00d1.TIF”和“aSMA neut_Plate_D_p00_0_B11f00d1.TIF”的脚本,无论数字前面是否有“0”。
下面是到目前为止的代码。目录设置是我仍在工作的东西。
// Get directory of images
//inDir = getDirectory("*\aSMA neut.2022-12-05-22-40-09")
// Set output directory for merged images
//outDir = getDirectory("")
// For loop to go through all images
var well=9;
var image=5;
for (i = 1; i <= well; ++i) {
for (p = 0; p <= image; ++p) {
open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d0.TIF"); // Will need to change i value to account for presence of 0 before single digits
image1 = getTitle;
open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d1.TIF"); // Will need to change i value to account for presence of 0 before single digits
image2 = getTitle;
run("Merge Channels...", "c1=" + image1 + " c2=" + image2 + " create keep");
saveAs("tif", "C:/Users/fgoot/Downloads/OneDrive_2023-07-24/aSMA neut.2022-12-05-22-40-09/merged/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d" + "_merged.tif");
run("Close All");
print(image1);
print(image2);
print(i);
}
}
字符串
基本上,我需要一个“01”字符串被识别为“1”。
编辑:在示例中的文件名中的B后面添加了一个“0”。这是适用于值1-9的方法,但当它达到10或更高时,B后面没有“0”。
1条答案
按热度按时间vfwfrxfs1#
我不确定它是否正确地理解了这个问题,即使在所有的评论之后,我发现它有点混乱。
也许你需要这样的东西?这里我在0后面加了一个问号,使它成为可选的。这也将匹配
011
,但不匹配001
。但也许这是确定的,100个文件是一个最大的为您。open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0?" + i + "f0" + p + "d0.TIF");
个您也可以使用
String.format("%02d", i)
生成一个精确的字符串来匹配,如下所示:open(String.format("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B%02df0%dd0.TIF", i, p));
个