Login  Register

Re: Problem with Duplicate in batch macro

Posted by Adam Goode on Aug 24, 2010; 3:07pm
URL: http://imagej.273.s1.nabble.com/Problem-with-Duplicate-in-batch-macro-tp3687187p3687189.html

On 08/18/2010 07:26 PM, Rasband, Wayne (NIH/NIMH) [E] wrote:

> On Aug 18, 2010, at 5:21 PM, Adam Goode wrote:
>
>> Hi,
>>
>> I have this macro:
>>
>>
>> var z = getImageID();
>> print(z);
>> selectImage(z);
>>
>> run("Duplicate...", "title=item2");
>> var z2 = getImageID();
>> print(z2);
>>
>> selectImage(z);
>> selectImage(z2);
>>
>>
>>
>> I if run like this it works:
>> java -jar ij.jar test1.png test.txt
>>
>> I get this in the log:
>> -2
>> -3
>>
>>
>> If I run in batch:
>> java -jar ij.jar test1.png -batch test.txt
>>
>> I get this:
>> -2
>> -3
>> Image -2 not found or no images are open.
>>
>>
>> This happens with 1.44e and 1.44f11.
>>
>>
>>
>> Note that if I add the image to the macro directly and not on the
>> command line:
>>
>> open("test.png");
>>
>> then everything works, in batch mode and not:
>> java -jar ij.jar -batch test2.txt
>>
>> -2
>> -3
>>
>>
>>
>> Any ideas?
>
> It works if you add
>
>     open(getArgument);
>
> to the beginning of the macro and run it using
>
>     java -jar ij.jar -batch test.txt test1.png
>
> -wayne
>


Hi,

Thanks for the tip. I also found that if I modified ImageJ.java like this:

diff -ur source/ij/ImageJ.java source~/ij/ImageJ.java
--- source/ij/ImageJ.java 2010-08-24 11:03:00.159768757 -0400
+++ source~/ij/ImageJ.java 2010-08-21 22:41:00.000000000 -0400
@@ -545,10 +545,9 @@
  if (arg==null) continue;
  //IJ.log(i+"  "+arg);
  if (args[i].startsWith("-")) {
- if (args[i].startsWith("-batch")) {
+ if (args[i].startsWith("-batch"))
  noGUI = true;
- Interpreter.batchMode = true;
- } else if (args[i].startsWith("-debug"))
+ else if (args[i].startsWith("-debug"))
  IJ.debugMode = true;
  else if (args[i].startsWith("-ijpath") && i+1<nArgs) {
  Prefs.setHomeDir(args[i+1]);


Then it also works. I think the issue is that Interpreter.batchMode has
to be true before IJ.open() can run, otherwise the window doesn't get
registered with the batch mode images imageTable Vector.

I don't know if this breaks other things, but it does fix my batch mode
bug shown in the test case above.


Thanks,

Adam