Demo plugin Image_Inverter.java

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

Demo plugin Image_Inverter.java

Rudolf Oldenbourg
What change is needed in the Demo plugin Image_Inverter.java to make  
it invert only the values in a single slice of a stack?
Currently, it is called repeatedly to process all the slices in a  
stack. But I want it to invert the values inside a ROI of only one  
slice in a stack.
Thanks for any help,
Rudolf

plugin Image_Inverter.java:

import ij.*;
import ij.plugin.filter.PlugInFilter;
import ij.process.*;
import java.awt.*;

/** This sample ImageJ plugin filter inverts images.

A few things to note:
        1) Filter plugins must implement the PlugInFilter interface.
        2) User plugins do not use the package statement;
        3) Plugins residing in the "plugins" folder, and with at
        least one underscore in their name, are automatically
        installed in the PlugIns menu.
        4) Plugins can be installed in other menus by
        packaging them as JAR files.
        5) The class name ("Image_Inverter") and file name
        ("Image_Inverter.java") must be the same.
        6) This filter works with selections, including non-rectangular  
selections.
        7) It will be called repeatedly to process all the slices in a stack.
        8) It supports Undo for single images.
        9) "~" is the bitwise complement operator.
*/

public class Image_Inverter implements PlugInFilter {

        public int setup(String arg, ImagePlus imp) {
                if (IJ.versionLessThan("1.37j"))
                        return DONE;
                else
                        return DOES_ALL+DOES_STACKS+SUPPORTS_MASKING;
        }

        public void run(ImageProcessor ip) {
                Rectangle r = ip.getRoi();
                for (int y=r.y; y<(r.y+r.height); y++)
                        for (int x=r.x; x<(r.x+r.width); x++)
                                ip.set(x, y, ~ip.get(x,y));
        }

}


CONFIDENTIALITY NOTICE: This email message is intended only for
the addressee(s) and contains confidential and privileged
material for the sole use of the intended recipient(s). Any
review, use, distribution or disclosure by others is strictly
prohibited. If you have received this communication in error,
please notify the sender immediately by email and delete the
message and any file attachments from your computer.
Reply | Threaded
Open this post in threaded view
|

Re: Demo plugin Image_Inverter.java

David Hovis
I believe you need to change:
       
        return DOES_ALL+DOES_STACKS+SUPPORTS_MASKING;

to
        return DOES_ALL+SUPPORTS_MASKING;

--David

On Jul 1, 2009, at 9:52 PM, Rudolf Oldenbourg wrote:

> What change is needed in the Demo plugin Image_Inverter.java to make  
> it invert only the values in a single slice of a stack?
> Currently, it is called repeatedly to process all the slices in a  
> stack. But I want it to invert the values inside a ROI of only one  
> slice in a stack.
> Thanks for any help,
> Rudolf
>
> plugin Image_Inverter.java:
>
> import ij.*;
> import ij.plugin.filter.PlugInFilter;
> import ij.process.*;
> import java.awt.*;
>
> /** This sample ImageJ plugin filter inverts images.
>
> A few things to note:
> 1) Filter plugins must implement the PlugInFilter interface.
> 2) User plugins do not use the package statement;
> 3) Plugins residing in the "plugins" folder, and with at
> least one underscore in their name, are automatically
> installed in the PlugIns menu.
> 4) Plugins can be installed in other menus by
> packaging them as JAR files.
> 5) The class name ("Image_Inverter") and file name
> ("Image_Inverter.java") must be the same.
> 6) This filter works with selections, including non-rectangular  
> selections.
> 7) It will be called repeatedly to process all the slices in a stack.
> 8) It supports Undo for single images.
> 9) "~" is the bitwise complement operator.
> */
>
> public class Image_Inverter implements PlugInFilter {
>
> public int setup(String arg, ImagePlus imp) {
> if (IJ.versionLessThan("1.37j"))
> return DONE;
> else
> return DOES_ALL+DOES_STACKS+SUPPORTS_MASKING;
> }
>
> public void run(ImageProcessor ip) {
> Rectangle r = ip.getRoi();
> for (int y=r.y; y<(r.y+r.height); y++)
> for (int x=r.x; x<(r.x+r.width); x++)
> ip.set(x, y, ~ip.get(x,y));
> }
>
> }
>
>
> CONFIDENTIALITY NOTICE: This email message is intended only for
> the addressee(s) and contains confidential and privileged
> material for the sole use of the intended recipient(s). Any
> review, use, distribution or disclosure by others is strictly
> prohibited. If you have received this communication in error,
> please notify the sender immediately by email and delete the
> message and any file attachments from your computer.