Login  Register

Re: Writing a macro to save image stack as series of separate files

Posted by Straub, Volko A. (Dr.) on Sep 11, 2014; 6:07am
URL: http://imagej.273.s1.nabble.com/Writing-a-macro-to-save-image-stack-as-series-of-separate-files-tp5009571p5009572.html

In order for newFileName to be recognised as a variable inside this string, you need to write it as

run("Image Sequence... ", "format=TIFF name="+newFileName+" start=0 digits=3
save="+firstPlaneName)

Note the "+ before the variable and the +" after the variable - this will insert the content of your variable into the string.
I assume firstPlaneName at the end of that command is also a varibale. So, you will have to add "+ before that variable name as well. You don't need a +" at the end as there is no more text to be added to that string.

Below is an extract from the ImageJ Macro documentation that gives more details

The input fields of a dialog can be set to the contents of a macro
variables by using string concatentation
(http://rsb.info.nih.gov/ij/developer/macro/macros.html):

noise = 50; output = "Point Selection"; run("Find Maxima...",
"noise="+noise+" output=["+output+"] light"); With ImageJ 1.43 and
later, there is an easier method that only requires adding "&" to the
variable name in the options string: noise = 50; output = "Point
Selection"; run("Find Maxima...", "noise=&noise output=&output light");
String variables passed using this method do not have to be enclosed in
brackets. For more examples, see theArgumentPassingDemo
<http://rsb.info.nih.gov/ij/macros/ArgumentPassingDemo.txt>macro.

I hope this helps,
Volko

On 10/09/2014 23:51, jlw wrote:

> Hi, I'm trying to write a macro to open image stacks, manually look at them
> and adjust brightness/contrast, then save as a series of separate files,
> each in its own folder. The way the files are named is not flexible because
> they have to be named in a certain way to feed into another Matlab program
> that is already written. Here is the code I have:
>
>
> function prepareForMatlab(input, output, filename) {
>      setBatchMode(false);
>      open(input + filename);
>      run("Brightness/Contrast...");
> waitForUser('Adjust brightness and contrast');
> run("Close"); //The filename is automatically extracted but we have to
> modify this to get it without the extension
> name = getTitle; //Includes .tif
>      dotIndex = indexOf(name, ".");
>      title = substring(name, 0, dotIndex); //name without the extension
>      mouseAndRegionNumber = substring(output,33); //Extracts the mouse and
> region number, in this case delta_1. Will change if file structure changes
> print(mouseAndRegionNumber);
> newFileName = mouseAndRegionNumber + "_" + title + "_";
> print(newFileName);
> firstPlaneName = output + "/" + title + "/";
> print(firstPlaneName);
> run("Image Sequence... ", "format=TIFF name=newFileName start=0 digits=3
> save=firstPlaneName");
>
> run("Close All");
> }
>
> input = "/C:/.../Raw/"; //Here i've omitted some directories with a ... just
> for the purpose of posting this question
> output = "/C:/.../delta_1";
>  
> list = getFileList(input);
> for (i = 0; i < list.length; i++){
> setBatchMode(false);
>          prepareForMatlab(input, output, list[i]);
> }
>
>
> I know this code is probably not the most elegant way to do this (accepting
> suggestions on that as well!) but the problem I'm having now is that in the
> line
> run("Image Sequence... ", "format=TIFF name=newFileName start=0 digits=3
> save=firstPlaneName")
> newFileName is not treated as a variable with a string value but rather as a
> string itself (so all the files end up having the word newFileName in them).
> How do I fix this?
>
> This code also has another weird problem where the images open one by one
> and allow the user to move the sliders to see different z planes and then
> adjust brightness/contrast. This works fine unless you try to switch back
> and forth between toggling z planes and toggling brightness. (Then the macro
> gives and error "no image open") No idea why this would happen...it works
> fine if you do one and then the other, just not if you switch back and
> forth.
>
> Any help would be greatly appreciated!!!
>
>
>
> --
> View this message in context: http://imagej.1557.x6.nabble.com/Writing-a-macro-to-save-image-stack-as-series-of-separate-files-tp5009571.html
> Sent from the ImageJ mailing list archive at Nabble.com.
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html