ImageJ does not add new plugins to the menu

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

ImageJ does not add new plugins to the menu

Paul Cholerzynski
Hi,
I am working on a new project where I need to create a plugin for ImageJ using NetBeans.
My problem is that ImageJ does not see my test plugins in its menu.

I've made a general reinstalation of NetBeans, JDK, JRE and ImageJ itself.
Then I created a new plugin using the guide: https://www.youtube.com/watch?v=Ac-6gJ2eRb0 .
This one worked perfectly, but I wanted the plugin to be in the menu so I've put the .java, .class, .Jar files in the plugins folder, made sure that there is an "_" underscore in the .class file and run ImageJ.
Unfortunately with no effect. Then I tried using the "Compile and Run" and "Install" options - still no result.
I've also searched this forum but for now didn't find any working solution.

If anybody has any ideas I am all ears.
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Paul Cholerzynski
When I run "Compile and run" I get this error:
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

ctrueden
Hi Paul,

Check out this project, intended for you to use as a template:

https://github.com/imagej/example-legacy-plugin

Regards,
Curtis



On Mar 28, 2017 6:10 AM, "Paul Cholerzynski" <[hidden email]>
wrote:

> When I run "Compile and run" I get this error:
> <http://imagej.1557.x6.nabble.com/file/n5018404/error.png>
>
>
>
> --
> View this message in context: http://imagej.1557.x6.nabble.
> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018404.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
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Paul Cholerzynski
I used it and it worked fine, but as a separate project using ImageJ. I was hoping that I could add it directly to the plugins menu (in the plugins forder). Another way around is to load my images and open them in ImageWindow, but I doun't know yet how to do that.  

Right now it looks like this:

import ij.IJ;
import ij.ImagePlus;
import ij.io.Opener;
import ij.plugin.PlugIn;
import ij.process.ImageProcessor;
import ij.gui.ImageWindow;

public class Cephalometric_analysis implements PlugIn{
    @Override
    public void run(String args){
       IJ.showMessage("This is a test");
        Opener opener = new Opener();  
        String imageFilePath = "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
        ImagePlus imp = opener.openImage(imageFilePath);
        ImageProcessor ip = imp.getProcessor();
        ImageWindow(ImagePlus imp);
        ImageWindow iw = new ImageWindow(imp);
        iw.setImage(imp);
    }
    public static void main(final String... args){
       
        new ij.ImageJ();        
        new Cephalometric_analysis().run("");
    }
}

Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Wayne Rasband-2
> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]> wrote:
>
> I used it and it worked fine, but as a separate project using ImageJ. I was
> hoping that I could add it directly to the plugins menu (in the plugins
> forder). Another way around is to load my images and open them in
> ImageWindow, but I doun't know yet how to do that.

This example is more complicated than it needs to be. Save the following simplified version in the plugins folder, or sub-folder, as “Cephalometric_Analysis.java", compile it using Plugins>Compile and Run, and it will be added to the Plugins menu, or sub-menu, when you use the Help>Refresh Menus command or restart ImageJ.

-wayne

import ij.*;
import ij.plugin.PlugIn;

public class Cephalometric_Analysis implements PlugIn {

   public void run(String args){
       ImagePlus imp = IJ.open(imageFilePath);
       imp.show;
    }

}



>  Right now it looks like this:
>
> import ij.IJ;
> import ij.ImagePlus;
> import ij.io.Opener;
> import ij.plugin.PlugIn;
> import ij.process.ImageProcessor;
> import ij.gui.ImageWindow;
>
> public class Cephalometric_analysis implements PlugIn{
>    @Override
>    public void run(String args){
>       IJ.showMessage("This is a test");
>        Opener opener = new Opener();  
>        String imageFilePath =
> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
>        ImagePlus imp = opener.openImage(imageFilePath);
>        ImageProcessor ip = imp.getProcessor();
>        ImageWindow(ImagePlus imp);
>        ImageWindow iw = new ImageWindow(imp);
>        iw.setImage(imp);
>    }
>    public static void main(final String... args){
>
>        new ij.ImageJ();        
>        new Cephalometric_analysis().run("");
>    }
> }
>
>
>
>
>
> --
> View this message in context: http://imagej.1557.x6.nabble.com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.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
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

ctrueden
Hi Wayne & everyone,

Wayne wrote:
> compile it using Plugins>Compile and Run

Please note that "Refresh Menus" and "Compile and Run" are not currently
supported in ImageJ2 [1, 2, 3].

> This example is more complicated than it needs to be.

I agree that the example is too complicated. However, I think there is a
middle ground here -- we want to provide a hackable template from which
real-world plugins can be easily created. E.g.: it should show how to use
GenericDialog, which most plugins will need.

As always, pull requests improving the example are most welcome.

Paul wrote:
> I was hoping that I could add it directly to the plugins menu (in the
> plugins forder).

Certainly you should be able to do that, by building the JAR file and
dropping it into your ImageJ plugins folder. The plugins.config file in
src/main/resources defines which plugins appear where in the menus.

The example-legacy-plugin uses a hack in the main method [4] to set the
plugins directory to match the IDE's runtime classpath. By doing this, the
plugin will appear in the Plugins menu without needing to refresh the menus.

Regards,
Curtis

[1] https://github.com/imagej/imagej-legacy/issues/98
[2] https://github.com/imagej/ij1-patcher/issues/31
[3] https://github.com/imagej/imagej-ui-swing/issues/48
[4]
https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e63c4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_Pixels.java#L172-L176

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:

> > On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
> wrote:
> >
> > I used it and it worked fine, but as a separate project using ImageJ. I
> was
> > hoping that I could add it directly to the plugins menu (in the plugins
> > forder). Another way around is to load my images and open them in
> > ImageWindow, but I doun't know yet how to do that.
>
> This example is more complicated than it needs to be. Save the following
> simplified version in the plugins folder, or sub-folder, as
> “Cephalometric_Analysis.java", compile it using Plugins>Compile and Run,
> and it will be added to the Plugins menu, or sub-menu, when you use the
> Help>Refresh Menus command or restart ImageJ.
>
> -wayne
>
> import ij.*;
> import ij.plugin.PlugIn;
>
> public class Cephalometric_Analysis implements PlugIn {
>
>    public void run(String args){
>        ImagePlus imp = IJ.open(imageFilePath);
>        imp.show;
>     }
>
> }
>
>
>
> >  Right now it looks like this:
> >
> > import ij.IJ;
> > import ij.ImagePlus;
> > import ij.io.Opener;
> > import ij.plugin.PlugIn;
> > import ij.process.ImageProcessor;
> > import ij.gui.ImageWindow;
> >
> > public class Cephalometric_analysis implements PlugIn{
> >    @Override
> >    public void run(String args){
> >       IJ.showMessage("This is a test");
> >        Opener opener = new Opener();
> >        String imageFilePath =
> > "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
> >        ImagePlus imp = opener.openImage(imageFilePath);
> >        ImageProcessor ip = imp.getProcessor();
> >        ImageWindow(ImagePlus imp);
> >        ImageWindow iw = new ImageWindow(imp);
> >        iw.setImage(imp);
> >    }
> >    public static void main(final String... args){
> >
> >        new ij.ImageJ();
> >        new Cephalometric_analysis().run("");
> >    }
> > }
> >
> >
> >
> >
> >
> > --
> > View this message in context: http://imagej.1557.x6.nabble.
> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.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
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Michael Schmid
In reply to this post by Paul Cholerzynski
Hi Paul,

sorry, I cannot reproduce the problem.

I tried your plugin with 'Compile&Run' in plain ImageJ 1.51m.
I had to remove the line "ImageWindow(ImagePlus imp);", which does
nothing and caused an error during compilation.
Then the plugin appears in the Plugins menu after Help>Refresh Menus and
also after restarting ImageJ.

Maybe you have overlooked the error message of the compiler? If it can't
be compiled, it can't appear in the plugins menu.


Michael
________________________________________________________________
On 28/03/2017 15:56, Paul Cholerzynski wrote:

> I used it and it worked fine, but as a separate project using ImageJ. I was
> hoping that I could add it directly to the plugins menu (in the plugins
> forder). Another way around is to load my images and open them in
> ImageWindow, but I doun't know yet how to do that.
>
> Right now it looks like this:
>
> import ij.IJ;
> import ij.ImagePlus;
> import ij.io.Opener;
> import ij.plugin.PlugIn;
> import ij.process.ImageProcessor;
> import ij.gui.ImageWindow;
>
> public class Cephalometric_analysis implements PlugIn{
>     @Override
>     public void run(String args){
>        IJ.showMessage("This is a test");
>         Opener opener = new Opener();
>         String imageFilePath =
> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
>         ImagePlus imp = opener.openImage(imageFilePath);
>         ImageProcessor ip = imp.getProcessor();
>         ImageWindow(ImagePlus imp);
>         ImageWindow iw = new ImageWindow(imp);
>         iw.setImage(imp);
>     }
>     public static void main(final String... args){
>
>         new ij.ImageJ();
>         new Cephalometric_analysis().run("");
>     }
> }
>
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Paul Cholerzynski
In reply to this post by ctrueden
ctrueden wrote
The example-legacy-plugin uses a hack in the main method [4] to set the
plugins directory to match the IDE's runtime classpath. By doing this, the
plugin will appear in the Plugins menu without needing to refresh the menus.
After making some little changes to my code and using the hack explained by Curtis above I finally managed to make it work. I also tried to do it the way Michael explained, but I've got the same error as before.
Maybe it's because I'm running ImageJ 1.51g or perhaps something didn't inistall properly.

Thank you all for help.

Regards,
Paul
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Wayne Rasband-2
In reply to this post by Paul Cholerzynski
> On May 29, 2017, Curtis Rueden ([hidden email]) wrote:
>
> Hi Wayne & everyone,
>
> Wayne wrote:
>> compile it using Plugins>Compile and Run
>
> Please note that "Refresh Menus" and "Compile and Run" are not currently
> supported in ImageJ2 [1, 2, 3].
>
>> This example is more complicated than it needs to be.

The example can be further simplified, and it can avoid the non-working "Compile and Run” command in Fiji, by converting it into JavaScript. Save the following two line JavaScript version in the plugins folder, or sub-folder, as “Cephalometric_Analysis.js" and it will be added to the Plugins menu, or sub-menu, after you use the Help>Refresh Menus command or restart ImageJ.

    imp = IJ.openImage(“”);
    imp.show();

JavaScript is now a compiled language so it runs up to 30 times faster than the ImageJ macro language. Use the Sphere examples in the Help>Examples menu to compare the speed of the macro language, JavaScript, Beanshell, Python and Java. You will need to change the ‘size’ variable from 512 (0.25 megapixels) to 4096 (16 megapixels) to get a fair comparison. JavaScript is able to calculate a 16 megapixel image in a 0.3 seconds.

Note that this example will not work in Fiji as a menu command unless you add a statement that imports the IJ.class. It will work as is in the Script Editor if you enable the Edit>Auto-import (deprecated) option.

-wayne

> I agree that the example is too complicated. However, I think there is a
> middle ground here -- we want to provide a hackable template from which
> real-world plugins can be easily created. E.g.: it should show how to use
> GenericDialog, which most plugins will need.
>
> As always, pull requests improving the example are most welcome.
>
> Paul wrote:
>> I was hoping that I could add it directly to the plugins menu (in the
>> plugins forder).
>
> Certainly you should be able to do that, by building the JAR file and
> dropping it into your ImageJ plugins folder. The plugins.config file in
> src/main/resources defines which plugins appear where in the menus.
>
> The example-legacy-plugin uses a hack in the main method [4] to set the
> plugins directory to match the IDE's runtime classpath. By doing this, the
> plugin will appear in the Plugins menu without needing to refresh the menus.
>
> Regards,
> Curtis
>
> [1] https://github.com/imagej/imagej-legacy/issues/98
> [2] https://github.com/imagej/ij1-patcher/issues/31
> [3] https://github.com/imagej/imagej-ui-swing/issues/48
> [4]
> https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e63c4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_Pixels.java#L172-L176
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:
>
>>> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
>> wrote:
>>>
>>> I used it and it worked fine, but as a separate project using ImageJ. I
>> was
>>> hoping that I could add it directly to the plugins menu (in the plugins
>>> forder). Another way around is to load my images and open them in
>>> ImageWindow, but I doun't know yet how to do that.
>>
>> This example is more complicated than it needs to be. Save the following
>> simplified version in the plugins folder, or sub-folder, as
>> “Cephalometric_Analysis.java", compile it using Plugins>Compile and Run,
>> and it will be added to the Plugins menu, or sub-menu, when you use the
>> Help>Refresh Menus command or restart ImageJ.
>>
>> -wayne
>>
>> import ij.*;
>> import ij.plugin.PlugIn;
>>
>> public class Cephalometric_Analysis implements PlugIn {
>>
>>   public void run(String args){
>>       ImagePlus imp = IJ.open(imageFilePath);
>>       imp.show;
>>    }
>>
>> }
>>
>>
>>
>>> Right now it looks like this:
>>>
>>> import ij.IJ;
>>> import ij.ImagePlus;
>>> import ij.io.Opener;
>>> import ij.plugin.PlugIn;
>>> import ij.process.ImageProcessor;
>>> import ij.gui.ImageWindow;
>>>
>>> public class Cephalometric_analysis implements PlugIn{
>>>   @Override
>>>   public void run(String args){
>>>      IJ.showMessage("This is a test");
>>>       Opener opener = new Opener();
>>>       String imageFilePath =
>>> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
>>>       ImagePlus imp = opener.openImage(imageFilePath);
>>>       ImageProcessor ip = imp.getProcessor();
>>>       ImageWindow(ImagePlus imp);
>>>       ImageWindow iw = new ImageWindow(imp);
>>>       iw.setImage(imp);
>>>   }
>>>   public static void main(final String... args){
>>>
>>>       new ij.ImageJ();
>>>       new Cephalometric_analysis().run("");
>>>   }
>>> }
>>>
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context: http://imagej.1557.x6.nabble.
>> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.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
>>
> «  [hide part of quote]
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Stein Rørvik
Using Javascript as an alternative to a plug-in is an interesting approach;
I wonder whether or not it is possible to control what menu the script appears in, in the same way as plugins.config does ?  Can we have a javascript inside a jar?

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Wayne Rasband
Sent: 01. april 2017 23:58
To: [hidden email]
Subject: Re: ImageJ does not add new plugins to the menu

> On May 29, 2017, Curtis Rueden ([hidden email]) wrote:
>
> Hi Wayne & everyone,
>
> Wayne wrote:
>> compile it using Plugins>Compile and Run
>
> Please note that "Refresh Menus" and "Compile and Run" are not
> currently supported in ImageJ2 [1, 2, 3].
>
>> This example is more complicated than it needs to be.

The example can be further simplified, and it can avoid the non-working "Compile and Run” command in Fiji, by converting it into JavaScript. Save the following two line JavaScript version in the plugins folder, or sub-folder, as “Cephalometric_Analysis.js" and it will be added to the Plugins menu, or sub-menu, after you use the Help>Refresh Menus command or restart ImageJ.

    imp = IJ.openImage(“”);
    imp.show();

JavaScript is now a compiled language so it runs up to 30 times faster than the ImageJ macro language. Use the Sphere examples in the Help>Examples menu to compare the speed of the macro language, JavaScript, Beanshell, Python and Java. You will need to change the ‘size’ variable from 512 (0.25 megapixels) to 4096 (16 megapixels) to get a fair comparison. JavaScript is able to calculate a 16 megapixel image in a 0.3 seconds.

Note that this example will not work in Fiji as a menu command unless you add a statement that imports the IJ.class. It will work as is in the Script Editor if you enable the Edit>Auto-import (deprecated) option.

-wayne

> I agree that the example is too complicated. However, I think there is
> a middle ground here -- we want to provide a hackable template from
> which real-world plugins can be easily created. E.g.: it should show
> how to use GenericDialog, which most plugins will need.
>
> As always, pull requests improving the example are most welcome.
>
> Paul wrote:
>> I was hoping that I could add it directly to the plugins menu (in the
>> plugins forder).
>
> Certainly you should be able to do that, by building the JAR file and
> dropping it into your ImageJ plugins folder. The plugins.config file
> in src/main/resources defines which plugins appear where in the menus.
>
> The example-legacy-plugin uses a hack in the main method [4] to set
> the plugins directory to match the IDE's runtime classpath. By doing
> this, the plugin will appear in the Plugins menu without needing to refresh the menus.
>
> Regards,
> Curtis
>
> [1] https://github.com/imagej/imagej-legacy/issues/98
> [2] https://github.com/imagej/ij1-patcher/issues/31
> [3] https://github.com/imagej/imagej-ui-swing/issues/48
> [4]
> https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e63c
> 4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_Pix
> els.java#L172-L176
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Did you
> know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:
>
>>> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
>> wrote:
>>>
>>> I used it and it worked fine, but as a separate project using
>>> ImageJ. I
>> was
>>> hoping that I could add it directly to the plugins menu (in the
>>> plugins forder). Another way around is to load my images and open
>>> them in ImageWindow, but I doun't know yet how to do that.
>>
>> This example is more complicated than it needs to be. Save the
>> following simplified version in the plugins folder, or sub-folder, as
>> “Cephalometric_Analysis.java", compile it using Plugins>Compile and
>> Run, and it will be added to the Plugins menu, or sub-menu, when you
>> use the
>> Help>Refresh Menus command or restart ImageJ.
>>
>> -wayne
>>
>> import ij.*;
>> import ij.plugin.PlugIn;
>>
>> public class Cephalometric_Analysis implements PlugIn {
>>
>>   public void run(String args){
>>       ImagePlus imp = IJ.open(imageFilePath);
>>       imp.show;
>>    }
>>
>> }
>>
>>
>>
>>> Right now it looks like this:
>>>
>>> import ij.IJ;
>>> import ij.ImagePlus;
>>> import ij.io.Opener;
>>> import ij.plugin.PlugIn;
>>> import ij.process.ImageProcessor;
>>> import ij.gui.ImageWindow;
>>>
>>> public class Cephalometric_analysis implements PlugIn{
>>>   @Override
>>>   public void run(String args){
>>>      IJ.showMessage("This is a test");
>>>       Opener opener = new Opener();
>>>       String imageFilePath =
>>> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
>>>       ImagePlus imp = opener.openImage(imageFilePath);
>>>       ImageProcessor ip = imp.getProcessor();
>>>       ImageWindow(ImagePlus imp);
>>>       ImageWindow iw = new ImageWindow(imp);
>>>       iw.setImage(imp);
>>>   }
>>>   public static void main(final String... args){
>>>
>>>       new ij.ImageJ();
>>>       new Cephalometric_analysis().run("");
>>>   }
>>> }
>>>
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context: http://imagej.1557.x6.nabble.
>> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.htm
>> l
>>> 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
>>
> «  [hide part of quote]
>

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


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

ctrueden
Hi Stein,

> Using Javascript as an alternative to a plug-in is an interesting
approach;

See this section of the wiki: http://imagej.net/Scripting

> I wonder whether or not it is possible to control what menu the script
appears in

If you place a (e.g. Groovy) script at scripts/Foo/Bar/My_Script.groovy
then it will appear in menus at Foo > Bar > My Script.

> Can we have a javascript inside a jar?

Yes, if you place a script at e.g. scripts/Foo/Bar/My_Script.groovy inside
a JAR file, it will appear in the menus at Foo > Bar > My Script.

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Apr 5, 2017 at 1:06 PM, Stein Rørvik <[hidden email]> wrote:

> Using Javascript as an alternative to a plug-in is an interesting approach;
> I wonder whether or not it is possible to control what menu the script
> appears in, in the same way as plugins.config does ?  Can we have a
> javascript inside a jar?
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Wayne Rasband
> Sent: 01. april 2017 23:58
> To: [hidden email]
> Subject: Re: ImageJ does not add new plugins to the menu
>
> > On May 29, 2017, Curtis Rueden ([hidden email]) wrote:
> >
> > Hi Wayne & everyone,
> >
> > Wayne wrote:
> >> compile it using Plugins>Compile and Run
> >
> > Please note that "Refresh Menus" and "Compile and Run" are not
> > currently supported in ImageJ2 [1, 2, 3].
> >
> >> This example is more complicated than it needs to be.
>
> The example can be further simplified, and it can avoid the non-working
> "Compile and Run” command in Fiji, by converting it into JavaScript. Save
> the following two line JavaScript version in the plugins folder, or
> sub-folder, as “Cephalometric_Analysis.js" and it will be added to the
> Plugins menu, or sub-menu, after you use the Help>Refresh Menus command or
> restart ImageJ.
>
>     imp = IJ.openImage(“”);
>     imp.show();
>
> JavaScript is now a compiled language so it runs up to 30 times faster
> than the ImageJ macro language. Use the Sphere examples in the
> Help>Examples menu to compare the speed of the macro language, JavaScript,
> Beanshell, Python and Java. You will need to change the ‘size’ variable
> from 512 (0.25 megapixels) to 4096 (16 megapixels) to get a fair
> comparison. JavaScript is able to calculate a 16 megapixel image in a 0.3
> seconds.
>
> Note that this example will not work in Fiji as a menu command unless you
> add a statement that imports the IJ.class. It will work as is in the Script
> Editor if you enable the Edit>Auto-import (deprecated) option.
>
> -wayne
>
> > I agree that the example is too complicated. However, I think there is
> > a middle ground here -- we want to provide a hackable template from
> > which real-world plugins can be easily created. E.g.: it should show
> > how to use GenericDialog, which most plugins will need.
> >
> > As always, pull requests improving the example are most welcome.
> >
> > Paul wrote:
> >> I was hoping that I could add it directly to the plugins menu (in the
> >> plugins forder).
> >
> > Certainly you should be able to do that, by building the JAR file and
> > dropping it into your ImageJ plugins folder. The plugins.config file
> > in src/main/resources defines which plugins appear where in the menus.
> >
> > The example-legacy-plugin uses a hack in the main method [4] to set
> > the plugins directory to match the IDE's runtime classpath. By doing
> > this, the plugin will appear in the Plugins menu without needing to
> refresh the menus.
> >
> > Regards,
> > Curtis
> >
> > [1] https://github.com/imagej/imagej-legacy/issues/98
> > [2] https://github.com/imagej/ij1-patcher/issues/31
> > [3] https://github.com/imagej/imagej-ui-swing/issues/48
> > [4]
> > https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e63c
> > 4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_Pix
> > els.java#L172-L176
> >
> > --
> > Curtis Rueden
> > LOCI software architect - https://loci.wisc.edu/software
> > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Did you
> > know ImageJ has a forum? http://forum.imagej.net/
> >
> >
> > On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:
> >
> >>> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
> >> wrote:
> >>>
> >>> I used it and it worked fine, but as a separate project using
> >>> ImageJ. I
> >> was
> >>> hoping that I could add it directly to the plugins menu (in the
> >>> plugins forder). Another way around is to load my images and open
> >>> them in ImageWindow, but I doun't know yet how to do that.
> >>
> >> This example is more complicated than it needs to be. Save the
> >> following simplified version in the plugins folder, or sub-folder, as
> >> “Cephalometric_Analysis.java", compile it using Plugins>Compile and
> >> Run, and it will be added to the Plugins menu, or sub-menu, when you
> >> use the
> >> Help>Refresh Menus command or restart ImageJ.
> >>
> >> -wayne
> >>
> >> import ij.*;
> >> import ij.plugin.PlugIn;
> >>
> >> public class Cephalometric_Analysis implements PlugIn {
> >>
> >>   public void run(String args){
> >>       ImagePlus imp = IJ.open(imageFilePath);
> >>       imp.show;
> >>    }
> >>
> >> }
> >>
> >>
> >>
> >>> Right now it looks like this:
> >>>
> >>> import ij.IJ;
> >>> import ij.ImagePlus;
> >>> import ij.io.Opener;
> >>> import ij.plugin.PlugIn;
> >>> import ij.process.ImageProcessor;
> >>> import ij.gui.ImageWindow;
> >>>
> >>> public class Cephalometric_analysis implements PlugIn{
> >>>   @Override
> >>>   public void run(String args){
> >>>      IJ.showMessage("This is a test");
> >>>       Opener opener = new Opener();
> >>>       String imageFilePath =
> >>> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
> >>>       ImagePlus imp = opener.openImage(imageFilePath);
> >>>       ImageProcessor ip = imp.getProcessor();
> >>>       ImageWindow(ImagePlus imp);
> >>>       ImageWindow iw = new ImageWindow(imp);
> >>>       iw.setImage(imp);
> >>>   }
> >>>   public static void main(final String... args){
> >>>
> >>>       new ij.ImageJ();
> >>>       new Cephalometric_analysis().run("");
> >>>   }
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> View this message in context: http://imagej.1557.x6.nabble.
> >> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.htm
> >> l
> >>> 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
> >>
> > «  [hide part of quote]
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

ctrueden
Hi again Stein,

Just to clarify my last post: the installation of scripts into the menu
structure, both inside and outside of JAR files, is a feature of ImageJ2
[1]. I mention this specifically because I noticed from a different thread
that you are using ImageJ 1.x.

Regards,
Curtis

[1] https://imagej.net/ImageJ2

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Apr 5, 2017 at 1:41 PM, Curtis Rueden <[hidden email]> wrote:

> Hi Stein,
>
> > Using Javascript as an alternative to a plug-in is an interesting
> approach;
>
> See this section of the wiki: http://imagej.net/Scripting
>
> > I wonder whether or not it is possible to control what menu the script
> appears in
>
> If you place a (e.g. Groovy) script at scripts/Foo/Bar/My_Script.groovy
> then it will appear in menus at Foo > Bar > My Script.
>
> > Can we have a javascript inside a jar?
>
> Yes, if you place a script at e.g. scripts/Foo/Bar/My_Script.groovy
> inside a JAR file, it will appear in the menus at Foo > Bar > My Script.
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Wed, Apr 5, 2017 at 1:06 PM, Stein Rørvik <[hidden email]>
> wrote:
>
>> Using Javascript as an alternative to a plug-in is an interesting
>> approach;
>> I wonder whether or not it is possible to control what menu the script
>> appears in, in the same way as plugins.config does ?  Can we have a
>> javascript inside a jar?
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Wayne Rasband
>> Sent: 01. april 2017 23:58
>> To: [hidden email]
>> Subject: Re: ImageJ does not add new plugins to the menu
>>
>> > On May 29, 2017, Curtis Rueden ([hidden email]) wrote:
>> >
>> > Hi Wayne & everyone,
>> >
>> > Wayne wrote:
>> >> compile it using Plugins>Compile and Run
>> >
>> > Please note that "Refresh Menus" and "Compile and Run" are not
>> > currently supported in ImageJ2 [1, 2, 3].
>> >
>> >> This example is more complicated than it needs to be.
>>
>> The example can be further simplified, and it can avoid the non-working
>> "Compile and Run” command in Fiji, by converting it into JavaScript. Save
>> the following two line JavaScript version in the plugins folder, or
>> sub-folder, as “Cephalometric_Analysis.js" and it will be added to the
>> Plugins menu, or sub-menu, after you use the Help>Refresh Menus command or
>> restart ImageJ.
>>
>>     imp = IJ.openImage(“”);
>>     imp.show();
>>
>> JavaScript is now a compiled language so it runs up to 30 times faster
>> than the ImageJ macro language. Use the Sphere examples in the
>> Help>Examples menu to compare the speed of the macro language, JavaScript,
>> Beanshell, Python and Java. You will need to change the ‘size’ variable
>> from 512 (0.25 megapixels) to 4096 (16 megapixels) to get a fair
>> comparison. JavaScript is able to calculate a 16 megapixel image in a 0.3
>> seconds.
>>
>> Note that this example will not work in Fiji as a menu command unless you
>> add a statement that imports the IJ.class. It will work as is in the Script
>> Editor if you enable the Edit>Auto-import (deprecated) option.
>>
>> -wayne
>>
>> > I agree that the example is too complicated. However, I think there is
>> > a middle ground here -- we want to provide a hackable template from
>> > which real-world plugins can be easily created. E.g.: it should show
>> > how to use GenericDialog, which most plugins will need.
>> >
>> > As always, pull requests improving the example are most welcome.
>> >
>> > Paul wrote:
>> >> I was hoping that I could add it directly to the plugins menu (in the
>> >> plugins forder).
>> >
>> > Certainly you should be able to do that, by building the JAR file and
>> > dropping it into your ImageJ plugins folder. The plugins.config file
>> > in src/main/resources defines which plugins appear where in the menus.
>> >
>> > The example-legacy-plugin uses a hack in the main method [4] to set
>> > the plugins directory to match the IDE's runtime classpath. By doing
>> > this, the plugin will appear in the Plugins menu without needing to
>> refresh the menus.
>> >
>> > Regards,
>> > Curtis
>> >
>> > [1] https://github.com/imagej/imagej-legacy/issues/98
>> > [2] https://github.com/imagej/ij1-patcher/issues/31
>> > [3] https://github.com/imagej/imagej-ui-swing/issues/48
>> > [4]
>> > https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e63c
>> > 4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_Pix
>> > els.java#L172-L176
>> >
>> > --
>> > Curtis Rueden
>> > LOCI software architect - https://loci.wisc.edu/software
>> > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Did you
>> > know ImageJ has a forum? http://forum.imagej.net/
>> >
>> >
>> > On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:
>> >
>> >>> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
>> >> wrote:
>> >>>
>> >>> I used it and it worked fine, but as a separate project using
>> >>> ImageJ. I
>> >> was
>> >>> hoping that I could add it directly to the plugins menu (in the
>> >>> plugins forder). Another way around is to load my images and open
>> >>> them in ImageWindow, but I doun't know yet how to do that.
>> >>
>> >> This example is more complicated than it needs to be. Save the
>> >> following simplified version in the plugins folder, or sub-folder, as
>> >> “Cephalometric_Analysis.java", compile it using Plugins>Compile and
>> >> Run, and it will be added to the Plugins menu, or sub-menu, when you
>> >> use the
>> >> Help>Refresh Menus command or restart ImageJ.
>> >>
>> >> -wayne
>> >>
>> >> import ij.*;
>> >> import ij.plugin.PlugIn;
>> >>
>> >> public class Cephalometric_Analysis implements PlugIn {
>> >>
>> >>   public void run(String args){
>> >>       ImagePlus imp = IJ.open(imageFilePath);
>> >>       imp.show;
>> >>    }
>> >>
>> >> }
>> >>
>> >>
>> >>
>> >>> Right now it looks like this:
>> >>>
>> >>> import ij.IJ;
>> >>> import ij.ImagePlus;
>> >>> import ij.io.Opener;
>> >>> import ij.plugin.PlugIn;
>> >>> import ij.process.ImageProcessor;
>> >>> import ij.gui.ImageWindow;
>> >>>
>> >>> public class Cephalometric_analysis implements PlugIn{
>> >>>   @Override
>> >>>   public void run(String args){
>> >>>      IJ.showMessage("This is a test");
>> >>>       Opener opener = new Opener();
>> >>>       String imageFilePath =
>> >>> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
>> >>>       ImagePlus imp = opener.openImage(imageFilePath);
>> >>>       ImageProcessor ip = imp.getProcessor();
>> >>>       ImageWindow(ImagePlus imp);
>> >>>       ImageWindow iw = new ImageWindow(imp);
>> >>>       iw.setImage(imp);
>> >>>   }
>> >>>   public static void main(final String... args){
>> >>>
>> >>>       new ij.ImageJ();
>> >>>       new Cephalometric_analysis().run("");
>> >>>   }
>> >>> }
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> View this message in context: http://imagej.1557.x6.nabble.
>> >> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.htm
>> >> l
>> >>> 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
>> >>
>> > «  [hide part of quote]
>> >
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: ImageJ does not add new plugins to the menu

Stein Rørvik
In reply to this post by ctrueden
Yes this is what I want but as you already realized, I am using vanilla ImageJ instead of Fiji.

The main reason for doing that is load time; I am using ImageJ as my primary tool for viewing and exporting micro-CT data and vanilla ImageJ loads in just a fraction of a second while Fiji takes a couple of minutes to launch. I have written some context sensitive right-click scripts in Windows that loads my data as a virtual stack in ImageJ 1.5x; this way I can open and browse a 4000^3 voxel dataset easily in a matter of seconds to locate the data of interest for further processing. Loading the same dataset in the dedicated software supplied with the micro-CT takes half an hour since it is all loaded into memory. Since CT time is limited due to high demand, my data throughput in a day with an instrument booking would be many hundreds of gigabytes, so every extra second or minute spent in the workflow matters.

Another drawback with Fiji which makes it unusable in my workflow is that when doing inevitably lengthy operations like exporting my very big stacks to AVI (for easy sharing with customers) which I have also automated by right-click scripts; the Fiji UI does not appear until _after_ the script has finished. The export might take half an hour or so, which really demands a progress bar or some other visual clue that the process is running.

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Curtis Rueden
Sent: 05. april 2017 20:42
To: [hidden email]
Subject: Re: ImageJ does not add new plugins to the menu

Hi Stein,

> Using Javascript as an alternative to a plug-in is an interesting
approach;

See this section of the wiki: http://imagej.net/Scripting

> I wonder whether or not it is possible to control what menu the script
appears in

If you place a (e.g. Groovy) script at scripts/Foo/Bar/My_Script.groovy then it will appear in menus at Foo > Bar > My Script.

> Can we have a javascript inside a jar?

Yes, if you place a script at e.g. scripts/Foo/Bar/My_Script.groovy inside a JAR file, it will appear in the menus at Foo > Bar > My Script.

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Did you know ImageJ has a forum? http://forum.imagej.net/


On Wed, Apr 5, 2017 at 1:06 PM, Stein Rørvik <[hidden email]> wrote:

> Using Javascript as an alternative to a plug-in is an interesting
> approach; I wonder whether or not it is possible to control what menu
> the script appears in, in the same way as plugins.config does ?  Can
> we have a javascript inside a jar?
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Wayne Rasband
> Sent: 01. april 2017 23:58
> To: [hidden email]
> Subject: Re: ImageJ does not add new plugins to the menu
>
> > On May 29, 2017, Curtis Rueden ([hidden email]) wrote:
> >
> > Hi Wayne & everyone,
> >
> > Wayne wrote:
> >> compile it using Plugins>Compile and Run
> >
> > Please note that "Refresh Menus" and "Compile and Run" are not
> > currently supported in ImageJ2 [1, 2, 3].
> >
> >> This example is more complicated than it needs to be.
>
> The example can be further simplified, and it can avoid the
> non-working "Compile and Run” command in Fiji, by converting it into
> JavaScript. Save the following two line JavaScript version in the
> plugins folder, or sub-folder, as “Cephalometric_Analysis.js" and it
> will be added to the Plugins menu, or sub-menu, after you use the
> Help>Refresh Menus command or restart ImageJ.
>
>     imp = IJ.openImage(“”);
>     imp.show();
>
> JavaScript is now a compiled language so it runs up to 30 times faster
> than the ImageJ macro language. Use the Sphere examples in the
> Help>Examples menu to compare the speed of the macro language,
> Help>JavaScript,
> Beanshell, Python and Java. You will need to change the ‘size’
> variable from 512 (0.25 megapixels) to 4096 (16 megapixels) to get a
> fair comparison. JavaScript is able to calculate a 16 megapixel image
> in a 0.3 seconds.
>
> Note that this example will not work in Fiji as a menu command unless
> you add a statement that imports the IJ.class. It will work as is in
> the Script Editor if you enable the Edit>Auto-import (deprecated) option.
>
> -wayne
>
> > I agree that the example is too complicated. However, I think there
> > is a middle ground here -- we want to provide a hackable template
> > from which real-world plugins can be easily created. E.g.: it should
> > show how to use GenericDialog, which most plugins will need.
> >
> > As always, pull requests improving the example are most welcome.
> >
> > Paul wrote:
> >> I was hoping that I could add it directly to the plugins menu (in
> >> the plugins forder).
> >
> > Certainly you should be able to do that, by building the JAR file
> > and dropping it into your ImageJ plugins folder. The plugins.config
> > file in src/main/resources defines which plugins appear where in the menus.
> >
> > The example-legacy-plugin uses a hack in the main method [4] to set
> > the plugins directory to match the IDE's runtime classpath. By doing
> > this, the plugin will appear in the Plugins menu without needing to
> refresh the menus.
> >
> > Regards,
> > Curtis
> >
> > [1] https://github.com/imagej/imagej-legacy/issues/98
> > [2] https://github.com/imagej/ij1-patcher/issues/31
> > [3] https://github.com/imagej/imagej-ui-swing/issues/48
> > [4]
> > https://github.com/imagej/example-legacy-plugin/blob/59bba7bf39f77e6
> > 3c
> > 4e4498cb0643200b4c5b673/src/main/java/com/mycompany/imagej/Process_P
> > ix
> > els.java#L172-L176
> >
> > --
> > Curtis Rueden
> > LOCI software architect - https://loci.wisc.edu/software
> > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden Did
> > you know ImageJ has a forum? http://forum.imagej.net/
> >
> >
> > On Wed, Mar 29, 2017 at 10:39 AM, Wayne Rasband <[hidden email]> wrote:
> >
> >>> On Mar 28, 2017, at 9:56 AM, Paul Cholerzynski <[hidden email]>
> >> wrote:
> >>>
> >>> I used it and it worked fine, but as a separate project using
> >>> ImageJ. I
> >> was
> >>> hoping that I could add it directly to the plugins menu (in the
> >>> plugins forder). Another way around is to load my images and open
> >>> them in ImageWindow, but I doun't know yet how to do that.
> >>
> >> This example is more complicated than it needs to be. Save the
> >> following simplified version in the plugins folder, or sub-folder,
> >> as “Cephalometric_Analysis.java", compile it using Plugins>Compile
> >> and Run, and it will be added to the Plugins menu, or sub-menu,
> >> when you use the
> >> Help>Refresh Menus command or restart ImageJ.
> >>
> >> -wayne
> >>
> >> import ij.*;
> >> import ij.plugin.PlugIn;
> >>
> >> public class Cephalometric_Analysis implements PlugIn {
> >>
> >>   public void run(String args){
> >>       ImagePlus imp = IJ.open(imageFilePath);
> >>       imp.show;
> >>    }
> >>
> >> }
> >>
> >>
> >>
> >>> Right now it looks like this:
> >>>
> >>> import ij.IJ;
> >>> import ij.ImagePlus;
> >>> import ij.io.Opener;
> >>> import ij.plugin.PlugIn;
> >>> import ij.process.ImageProcessor;
> >>> import ij.gui.ImageWindow;
> >>>
> >>> public class Cephalometric_analysis implements PlugIn{
> >>>   @Override
> >>>   public void run(String args){
> >>>      IJ.showMessage("This is a test");
> >>>       Opener opener = new Opener();
> >>>       String imageFilePath =
> >>> "C:/Users/Admin/Documents/Notatki/Meh/Obrazy/";
> >>>       ImagePlus imp = opener.openImage(imageFilePath);
> >>>       ImageProcessor ip = imp.getProcessor();
> >>>       ImageWindow(ImagePlus imp);
> >>>       ImageWindow iw = new ImageWindow(imp);
> >>>       iw.setImage(imp);
> >>>   }
> >>>   public static void main(final String... args){
> >>>
> >>>       new ij.ImageJ();
> >>>       new Cephalometric_analysis().run("");
> >>>   }
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> View this message in context: http://imagej.1557.x6.nabble.
> >> com/ImageJ-does-not-add-new-plugins-to-the-menu-tp5018403p5018406.h
> >> tm
> >> l
> >>> 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
> >>
> > «  [hide part of quote]
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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


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