-
-
Save romainGuiet/cf42f3b1d31222a76d602dfe2f028894 to your computer and use it in GitHub Desktop.
// ask user to select a folder | |
dir = getDirectory("Select A folder"); | |
// get the list of files (& folders) in it | |
fileList = getFileList(dir); | |
// prepare a folder to output the images | |
output_dir = dir + File.separator + "output" + File.separator ; | |
File.makeDirectory(output_dir); | |
//activate batch mode | |
setBatchMode(true); | |
// LOOP to process the list of files | |
for (i = 0; i < lengthOf(fileList); i++) { | |
// define the "path" | |
// by concatenation of dir and the i element of the array fileList | |
current_imagePath = dir+fileList[i]; | |
// check that the currentFile is not a directory | |
if (!File.isDirectory(current_imagePath)){ | |
// open the image and split | |
open(current_imagePath); | |
// get some info about the image | |
getDimensions(width, height, channels, slices, frames); | |
// if it's a multi channel image , or a RGB | |
if ((channels > 1)||( bitDepth() == 24 )) run("Split Channels"); | |
// now we save all the generated images as tif in the output_dir | |
ch_nbr = nImages ; | |
for ( c = 1 ; c <= ch_nbr ; c++){ | |
selectImage(c); | |
currentImage_name = getTitle(); | |
saveAs("tiff", output_dir+currentImage_name); | |
} | |
// make sure to close every images befores opening the next one | |
run("Close All"); | |
} | |
} | |
setBatchMode(false); |
Hi @PatrickJS44 ,
Is it possible to modify the "save as" phase so that I can customize the renaming rule for each channel? Like adding prefix or suffix for splitted Blue channel output image.
you could modify the loop like this :
// let's assume you have 3 channels
prefix_array = { "ch1_prefix" , "ch2_prefix" , "ch3_prefix" }
for ( c = 1 ; c <= ch_nbr ; c++){
selectImage(c);
currentImage_name = getTitle();
saveAs("tiff", output_dir+prefix_array [c-1]+currentImage_name); // -1 because array start at 0
}
Cheers,
R
Hi all, I am fairly new to imageJ and writing code in general, and I used this macro to split my channels. however, it converted all of my RGB images to 8-bit grayscale. I'd like the images to remain in color, is there an addition to this macro that will do this? Thanks.
Hi @castrojenna ,
it converted all of my RGB images to 8-bit grayscale
Great that the expected results 😄 !
If you want to keep the Red, Green, Blue Lookup Tables , which make grey images look red, green or blue you could use the lines below
// let's assume the images are RGB, we define an arrray with the colors
colors = newArray("Red","Green","Blue");
for ( c = 1 ; c <= ch_nbr ; c++){
selectImage(c);
currentImage_name = getTitle();
run(colors[c-1]);
//run("RGB Color"); // uncomment to convert to RGB so the images has this color when opened in another software (Photoshop...)
saveAs("tiff", output_dir+currentImage_name);
}
Hi, thank you so much your macro, it is really helpful to.
I have tried to run it on the server with headless mode and it gave error below:
java.lang.VerifyError: Bad type on operand stack
I googled it, it is about the "this" statement missing, and I am really confuse about it.
Could you help me with that?
Thank you for the code!
Hi @Garcia-Hernandez-R ,
I'm sorry but I didn't get the latest notification and thought it was solved... what is the file format of the input image ? Tiff ?