Duplicating Images With Symbols

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

Duplicating Images With Symbols

David Webster
All,

If I write a macro that uses "setColor(255);drawOval(w/2, h/2, 50,50);" to
draw an oval into an image, then I can
duplicate the image (i.e. run("Duplicate ... ",... ) and oval is in the
duplicate. In Java, if I use

Vector list = new Vector();
OvalRoi roi = new OvalRoi(x,y,w,h);
roi.setInstanceColor(Color.green);
list.addElement(roi);
               
and then duplicate the resulting output image, the oval doesn't show up in
the duplicate.
Is there a way to insert an oval, or other symbols into an image in a Java
program and have them
be "duplicatable" outside of the program?

David Webster
Reply | Threaded
Open this post in threaded view
|

Re: Duplicating Images With Symbols

Wayne Rasband
 > If I write a macro that uses "setColor(255);drawOval(w/2,
 > h/2, 50,50);" to draw an oval into an image, then I can
 > duplicate the image (i.e. run("Duplicate ... ",... ) and
 > oval is in the duplicate. In Java, if I use
 >
 > Vector list = new Vector(); OvalRoi roi = new
 > OvalRoi(x,y,w,h); roi.setInstanceColor(Color.green);
 > list.addElement(roi);
 >
 > and then duplicate the resulting output image, the oval
 > doesn't show up in the duplicate. Is there a way to insert
 > an oval, or other symbols into an image in a Java program
 > and have them be "duplicatable" outside of the program?
 >
 > David Webster

You can duplicate what the macro code is doing using

     imp = IJ.getImage();
     ip = imp.getProcessor();
     ip.setColor(255);
     ip.drawOval(w/2, h/2, 50, 50);
     imp.updateAndDraw();

Or you can render an overlay and/or ROI onto the image using

    imp2 = imp.flatten();  // Image>Overlay>Flatten (1.43j or later)

which creates an RGB duplicate of the image with the overlay and any
ROI embedded in the pixel data.

-wayne
Reply | Threaded
Open this post in threaded view
|

Re: Duplicating Images With Symbols

David Webster
Thanks Wayne, works like gangbusters! - David

On Wed, Nov 18, 2009 at 12:04 PM, Wayne Rasband <[hidden email]> wrote:

>  > If I write a macro that uses "setColor(255);drawOval(w/2,
> > h/2, 50,50);" to draw an oval into an image, then I can
> > duplicate the image (i.e. run("Duplicate ... ",... ) and
> > oval is in the duplicate. In Java, if I use
> >
> > Vector list = new Vector(); OvalRoi roi = new
> > OvalRoi(x,y,w,h); roi.setInstanceColor(Color.green);
> > list.addElement(roi);
> >
> > and then duplicate the resulting output image, the oval
> > doesn't show up in the duplicate. Is there a way to insert
> > an oval, or other symbols into an image in a Java program
> > and have them be "duplicatable" outside of the program?
> >
> > David Webster
>
> You can duplicate what the macro code is doing using
>
>    imp = IJ.getImage();
>    ip = imp.getProcessor();
>    ip.setColor(255);
>    ip.drawOval(w/2, h/2, 50, 50);
>    imp.updateAndDraw();
>
> Or you can render an overlay and/or ROI onto the image using
>
>   imp2 = imp.flatten();  // Image>Overlay>Flatten (1.43j or later)
>
> which creates an RGB duplicate of the image with the overlay and any ROI
> embedded in the pixel data.
>
> -wayne
>