Hello ImageJ Users,
I am wondering if there is a pluging to do zooming in/out in an image or image stack and save this action as a movie. any help is highly appreciated in advance. Sincerely, Younes |
Hi. Wayne recently helped me with the below plugin, which I used to make some animations for a presentation. It zooms in until the selected area is the full screen size then you save the stack of images as an animation in ImageJ. I have been saving the stack as avi or animated gif files, but in the code here I slipped in a line that will also save it as an avi into the ij path, which you can uncomment // IJ.saveAs("AVI... ", "myfileZoom.avi") and change to save where you want. For animated gifs, I use the gif stack writer plugin. This code zooms from the onscreen image down to the selection size, using a gradient set differently each time, which is what I needed, but Wayne wrote some code that zooms starting with the selection and the way he did it is smoother and faster, I just haven't fully implemented it in this yet; you can find it in the list a few weeks back or email me and I will find it for you. Hope this helps.
import ij.*; import ij.gui.Roi; import ij.gui.StackWindow; import ij.plugin.*; import ij.process.ImageProcessor; public class zoomer_ implements PlugIn { public int height = 100; public int width = 100; public int roiheight = 100; public int roiwidth = 100; String NAME; public void run(String arg) { ImagePlus img=IJ.getImage(); height=img.getHeight(); width=img.getWidth(); Roi roi = img.getRoi(); if (roi==null) { IJ.showMessage("Please select an roi then try again"); return; } String NAME=img.getTitle(); double scale=80; scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); roiwidth=(int)roi.getBounds().getWidth(); roiheight=(int)roi.getBounds().getHeight(); int w =(int)( width*(scale/100f)); int h = (int)( height*(scale/100f)); int cx = (int)roi.getBounds().getCenterX(); int cy = (int)roi.getBounds().getCenterY(); //scale it each time by the same amount //the user determines the amount by //inputting a number for the rate of scaling //e.g., if the rate of scaling is 50, //then the roi is always 50% of the current size ImageStack s= new ImageStack(width, height); ImageProcessor ip = img.getProcessor(); ip.snapshot(); for (int i = w, j = h; (i > roiwidth)&&(j>roiheight); i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) { IJ.makeRectangle (cx-i/2,cy-j/2, i, j); IJ.run("Size...", "width="+width+ " height="+height+ " constrain interpolate"); String name=NAME+i; if(WindowManager.getCurrentImage().getHeight()!=height|| WindowManager.getCurrentImage().getWidth()!=width) IJ.run("Canvas Size...", "width="+width+ " height="+height+" position=Center"); s.addSlice(name, img.getProcessor().duplicate()); // WindowManager.getCurrentImage().getProcessor()); IJ.run("Revert"); } IJ.run("Revert"); img.setRoi(roi); StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", s)); sw.setVisible(true); // IJ.saveAs("AVI... ", "myfileZoom.avi"); } } ----- Original Message ---- From: Younes Leysi Derilou <[hidden email]> To: [hidden email] Sent: Wednesday, December 5, 2007 7:11:28 AM Subject: zooming on a region Hello ImageJ Users, I am wondering if there is a pluging to do zooming in/out in an image or image stack and save this action as a movie. any help is highly appreciated in advance. Sincerely, Younes |
Hello Dear Audrey,
Thanks so much for your nice attention to my email and sending the macro. I saved the text as a macro in the IJ macros folder, opened an image and then run the macro. it shows an error that ''undefined variable in line 1 <import> ij.*". this comes up either I chose a region or not before running macro. sorry i am not good in macro writing. If I put "//" in the first line, the same error comes up for the next lines. I would appreciate it, if you could let me have a macro that I can run it easily. Thanks so much and best regards, Younes On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> wrote: > Hi. Wayne recently helped me with the below plugin, which I used to make > some animations for a presentation. It zooms in until the selected area is > the full screen size then you save the stack of images as an animation in > ImageJ. I have been saving the stack as avi or animated gif files, but in > the code here I slipped in a line that will also save it as an avi into the > ij path, which you can uncomment // IJ.saveAs("AVI... ", "myfileZoom.avi") > and change to save where you want. For animated gifs, I use the gif stack > writer plugin. This code zooms from the onscreen image down to the > selection size, using a gradient set differently each time, which is what I > needed, but Wayne wrote some code that zooms starting with the selection and > the way he did it is smoother and faster, I just haven't fully implemented > it in this yet; you can find it in the list a few weeks back or email me and > I will find it for you. Hope this helps. > > import ij.*; > import ij.gui.Roi; > import ij.gui.StackWindow; > import ij.plugin.*; > import ij.process.ImageProcessor; > > public class zoomer_ implements PlugIn { > > public int height = 100; > public int width = 100; > public int roiheight = 100; > public int roiwidth = 100; > > String NAME; > public void run(String arg) > { > ImagePlus img=IJ.getImage(); > height=img.getHeight(); > width=img.getWidth(); > Roi roi = img.getRoi(); > if (roi==null) > { > IJ.showMessage("Please select an roi then try again"); > return; > } > > String NAME=img.getTitle(); > double scale=80; > scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); > roiwidth=(int)roi.getBounds().getWidth(); > roiheight=(int)roi.getBounds().getHeight(); > int w =(int)( width*(scale/100f)); > int h = (int)( height*(scale/100f)); > > int cx = (int)roi.getBounds().getCenterX(); > int cy = (int)roi.getBounds().getCenterY(); > //scale it each time by the same amount > //the user determines the amount by > //inputting a number for the rate of scaling > //e.g., if the rate of scaling is 50, > //then the roi is always 50% of the current size > > ImageStack s= new ImageStack(width, height); > ImageProcessor ip = img.getProcessor(); > ip.snapshot(); > for (int i = w, j = h; > (i > roiwidth)&&(j>roiheight); > i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) > { > IJ.makeRectangle > (cx-i/2,cy-j/2, i, j); > IJ.run("Size...", > "width="+width+ > " height="+height+ > " constrain interpolate"); > String name=NAME+i; > if(WindowManager.getCurrentImage > ().getHeight()!=height|| > WindowManager.getCurrentImage > ().getWidth()!=width) > IJ.run("Canvas Size...", "width="+width+ > " height="+height+" position=Center"); > s.addSlice(name, img.getProcessor().duplicate()); > // WindowManager.getCurrentImage > ().getProcessor()); > IJ.run("Revert"); > } > IJ.run("Revert"); > img.setRoi(roi); > StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", s)); > sw.setVisible(true); > // IJ.saveAs("AVI... ", "myfileZoom.avi"); > > } > > > } > > > > ----- Original Message ---- > From: Younes Leysi Derilou <[hidden email]> > To: [hidden email] > Sent: Wednesday, December 5, 2007 7:11:28 AM > Subject: zooming on a region > > Hello ImageJ Users, > > I am wondering if there is a pluging to do zooming in/out in an image > or > image stack and save this action as a movie. > any help is highly appreciated in advance. > > Sincerely, > Younes > |
That wasn't a macro, it was a plugin.
You need to save it in a file called zoomer_.java, and put it in your plugins folder. You can then use the Plugins->Compile and Run... --David ---------------------------------------- David Hovis Senior Research Associate Department of Materials Science Case Western Reserve University [hidden email] On Dec 6, 2007, at 10:44 AM, Younes Leysi Derilou wrote: > Hello Dear Audrey, > > Thanks so much for your nice attention to my email and sending the > macro. I > saved the text as a macro in the IJ macros folder, opened an image > and then > run the macro. it shows an error that ''undefined variable in line 1 > <import> ij.*". this comes up either I chose a region or not before > running > macro. sorry i am not good in macro writing. If I put "//" in the > first > line, the same error comes up for the next lines. I would appreciate > it, if > you could let me have a macro that I can run it easily. > > Thanks so much and best regards, > Younes > > On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> wrote: > >> Hi. Wayne recently helped me with the below plugin, which I used >> to make >> some animations for a presentation. It zooms in until the selected >> area is >> the full screen size then you save the stack of images as an >> animation in >> ImageJ. I have been saving the stack as avi or animated gif files, >> but in >> the code here I slipped in a line that will also save it as an avi >> into the >> ij path, which you can uncomment // IJ.saveAs("AVI... ", >> "myfileZoom.avi") >> and change to save where you want. For animated gifs, I use the >> gif stack >> writer plugin. This code zooms from the onscreen image down to the >> selection size, using a gradient set differently each time, which >> is what I >> needed, but Wayne wrote some code that zooms starting with the >> selection and >> the way he did it is smoother and faster, I just haven't fully >> implemented >> it in this yet; you can find it in the list a few weeks back or >> email me and >> I will find it for you. Hope this helps. >> >> import ij.*; >> import ij.gui.Roi; >> import ij.gui.StackWindow; >> import ij.plugin.*; >> import ij.process.ImageProcessor; >> >> public class zoomer_ implements PlugIn { >> >> public int height = 100; >> public int width = 100; >> public int roiheight = 100; >> public int roiwidth = 100; >> >> String NAME; >> public void run(String arg) >> { >> ImagePlus img=IJ.getImage(); >> height=img.getHeight(); >> width=img.getWidth(); >> Roi roi = img.getRoi(); >> if (roi==null) >> { >> IJ.showMessage("Please select an roi then try again"); >> return; >> } >> >> String NAME=img.getTitle(); >> double scale=80; >> scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); >> roiwidth=(int)roi.getBounds().getWidth(); >> roiheight=(int)roi.getBounds().getHeight(); >> int w =(int)( width*(scale/100f)); >> int h = (int)( height*(scale/100f)); >> >> int cx = (int)roi.getBounds().getCenterX(); >> int cy = (int)roi.getBounds().getCenterY(); >> //scale it each time by the same amount >> //the user determines the amount by >> //inputting a number for the rate of scaling >> //e.g., if the rate of scaling is 50, >> //then the roi is always 50% of the current size >> >> ImageStack s= new ImageStack(width, height); >> ImageProcessor ip = img.getProcessor(); >> ip.snapshot(); >> for (int i = w, j = h; >> (i > roiwidth)&&(j>roiheight); >> i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) >> { >> IJ.makeRectangle >> (cx-i/2,cy-j/2, i, j); >> IJ.run("Size...", >> "width="+width+ >> " height="+height+ >> " constrain interpolate"); >> String name=NAME+i; >> if(WindowManager.getCurrentImage >> ().getHeight()!=height|| >> WindowManager.getCurrentImage >> ().getWidth()!=width) >> IJ.run("Canvas Size...", "width="+width+ >> " height="+height+" position=Center"); >> s.addSlice(name, img.getProcessor().duplicate()); >> // WindowManager.getCurrentImage >> ().getProcessor()); >> IJ.run("Revert"); >> } >> IJ.run("Revert"); >> img.setRoi(roi); >> StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", >> s)); >> sw.setVisible(true); >> // IJ.saveAs("AVI... ", "myfileZoom.avi"); >> >> } >> >> >> } >> >> >> >> ----- Original Message ---- >> From: Younes Leysi Derilou <[hidden email]> >> To: [hidden email] >> Sent: Wednesday, December 5, 2007 7:11:28 AM >> Subject: zooming on a region >> >> Hello ImageJ Users, >> >> I am wondering if there is a pluging to do zooming in/out in an image >> or >> image stack and save this action as a movie. >> any help is highly appreciated in advance. >> >> Sincerely, >> Younes >> |
Hello David,
Thanks so much for your help. I followed your instruction, but got an error as following. could you please help me more. Thanks so much and Best Regards, Younes Note: sun.tools.javac.Main has been deprecated. C:\MBF_ImageJ\plugins\zoomer_.java:68: '}' expected. sw.setVisible(true); ^ 1 error, 1 warning On Dec 6, 2007 10:51 AM, David Hovis <[hidden email]> wrote: > That wasn't a macro, it was a plugin. > > You need to save it in a file called zoomer_.java, and put it in your > plugins folder. You can then use the Plugins->Compile and Run... > > --David > ---------------------------------------- > David Hovis > Senior Research Associate > Department of Materials Science > Case Western Reserve University > [hidden email] > > On Dec 6, 2007, at 10:44 AM, Younes Leysi Derilou wrote: > > > Hello Dear Audrey, > > > > Thanks so much for your nice attention to my email and sending the > > macro. I > > saved the text as a macro in the IJ macros folder, opened an image > > and then > > run the macro. it shows an error that ''undefined variable in line 1 > > <import> ij.*". this comes up either I chose a region or not before > > running > > macro. sorry i am not good in macro writing. If I put "//" in the > > first > > line, the same error comes up for the next lines. I would appreciate > > it, if > > you could let me have a macro that I can run it easily. > > > > Thanks so much and best regards, > > Younes > > > > On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> wrote: > > > >> Hi. Wayne recently helped me with the below plugin, which I used > >> to make > >> some animations for a presentation. It zooms in until the selected > >> area is > >> the full screen size then you save the stack of images as an > >> animation in > >> ImageJ. I have been saving the stack as avi or animated gif files, > >> but in > >> the code here I slipped in a line that will also save it as an avi > >> into the > >> ij path, which you can uncomment // IJ.saveAs("AVI... ", > >> "myfileZoom.avi") > >> and change to save where you want. For animated gifs, I use the > >> gif stack > >> writer plugin. This code zooms from the onscreen image down to the > >> selection size, using a gradient set differently each time, which > >> is what I > >> needed, but Wayne wrote some code that zooms starting with the > >> selection and > >> the way he did it is smoother and faster, I just haven't fully > >> implemented > >> it in this yet; you can find it in the list a few weeks back or > >> email me and > >> I will find it for you. Hope this helps. > >> > >> import ij.*; > >> import ij.gui.Roi; > >> import ij.gui.StackWindow; > >> import ij.plugin.*; > >> import ij.process.ImageProcessor; > >> > >> public class zoomer_ implements PlugIn { > >> > >> public int height = 100; > >> public int width = 100; > >> public int roiheight = 100; > >> public int roiwidth = 100; > >> > >> String NAME; > >> public void run(String arg) > >> { > >> ImagePlus img=IJ.getImage(); > >> height=img.getHeight(); > >> width=img.getWidth(); > >> Roi roi = img.getRoi(); > >> if (roi==null) > >> { > >> IJ.showMessage("Please select an roi then try again"); > >> return; > >> } > >> > >> String NAME=img.getTitle(); > >> double scale=80; > >> scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); > >> roiwidth=(int)roi.getBounds().getWidth(); > >> roiheight=(int)roi.getBounds().getHeight(); > >> int w =(int)( width*(scale/100f)); > >> int h = (int)( height*(scale/100f)); > >> > >> int cx = (int)roi.getBounds().getCenterX(); > >> int cy = (int)roi.getBounds().getCenterY(); > >> //scale it each time by the same amount > >> //the user determines the amount by > >> //inputting a number for the rate of scaling > >> //e.g., if the rate of scaling is 50, > >> //then the roi is always 50% of the current size > >> > >> ImageStack s= new ImageStack(width, height); > >> ImageProcessor ip = img.getProcessor(); > >> ip.snapshot(); > >> for (int i = w, j = h; > >> (i > roiwidth)&&(j>roiheight); > >> i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) > >> { > >> IJ.makeRectangle > >> (cx-i/2,cy-j/2, i, j); > >> IJ.run("Size...", > >> "width="+width+ > >> " height="+height+ > >> " constrain interpolate"); > >> String name=NAME+i; > >> if(WindowManager.getCurrentImage > >> ().getHeight()!=height|| > >> WindowManager.getCurrentImage > >> ().getWidth()!=width) > >> IJ.run("Canvas Size...", "width="+width+ > >> " height="+height+" position=Center"); > >> s.addSlice(name, img.getProcessor().duplicate()); > >> // WindowManager.getCurrentImage > >> ().getProcessor()); > >> IJ.run("Revert"); > >> } > >> IJ.run("Revert"); > >> img.setRoi(roi); > >> StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", > >> s)); > >> sw.setVisible(true); > >> // IJ.saveAs("AVI... ", "myfileZoom.avi"); > >> > >> } > >> > >> > >> } > >> > >> > >> > >> ----- Original Message ---- > >> From: Younes Leysi Derilou <[hidden email]> > >> To: [hidden email] > >> Sent: Wednesday, December 5, 2007 7:11:28 AM > >> Subject: zooming on a region > >> > >> Hello ImageJ Users, > >> > >> I am wondering if there is a pluging to do zooming in/out in an image > >> or > >> image stack and save this action as a movie. > >> any help is highly appreciated in advance. > >> > >> Sincerely, > >> Younes > >> > |
You are missing a } somewhere. You need to copy and paste starting
from: import ij.*; All the way down to the last curly brace }. --David On Dec 6, 2007, at 12:44 PM, Younes Leysi Derilou wrote: > Hello David, > > Thanks so much for your help. I followed your instruction, but got > an error > as following. could you please help me more. > > Thanks so much and Best Regards, > Younes > > Note: sun.tools.javac.Main has been deprecated. > C:\MBF_ImageJ\plugins\zoomer_.java:68: '}' expected. > sw.setVisible(true); > ^ > 1 error, 1 warning > > > > > On Dec 6, 2007 10:51 AM, David Hovis <[hidden email]> wrote: > >> That wasn't a macro, it was a plugin. >> >> You need to save it in a file called zoomer_.java, and put it in your >> plugins folder. You can then use the Plugins->Compile and Run... >> >> --David >> ---------------------------------------- >> David Hovis >> Senior Research Associate >> Department of Materials Science >> Case Western Reserve University >> [hidden email] >> >> On Dec 6, 2007, at 10:44 AM, Younes Leysi Derilou wrote: >> >>> Hello Dear Audrey, >>> >>> Thanks so much for your nice attention to my email and sending the >>> macro. I >>> saved the text as a macro in the IJ macros folder, opened an image >>> and then >>> run the macro. it shows an error that ''undefined variable in line 1 >>> <import> ij.*". this comes up either I chose a region or not before >>> running >>> macro. sorry i am not good in macro writing. If I put "//" in the >>> first >>> line, the same error comes up for the next lines. I would appreciate >>> it, if >>> you could let me have a macro that I can run it easily. >>> >>> Thanks so much and best regards, >>> Younes >>> >>> On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> >>> wrote: >>> >>>> Hi. Wayne recently helped me with the below plugin, which I used >>>> to make >>>> some animations for a presentation. It zooms in until the selected >>>> area is >>>> the full screen size then you save the stack of images as an >>>> animation in >>>> ImageJ. I have been saving the stack as avi or animated gif files, >>>> but in >>>> the code here I slipped in a line that will also save it as an avi >>>> into the >>>> ij path, which you can uncomment // IJ.saveAs("AVI... ", >>>> "myfileZoom.avi") >>>> and change to save where you want. For animated gifs, I use the >>>> gif stack >>>> writer plugin. This code zooms from the onscreen image down to the >>>> selection size, using a gradient set differently each time, which >>>> is what I >>>> needed, but Wayne wrote some code that zooms starting with the >>>> selection and >>>> the way he did it is smoother and faster, I just haven't fully >>>> implemented >>>> it in this yet; you can find it in the list a few weeks back or >>>> email me and >>>> I will find it for you. Hope this helps. >>>> >>>> import ij.*; >>>> import ij.gui.Roi; >>>> import ij.gui.StackWindow; >>>> import ij.plugin.*; >>>> import ij.process.ImageProcessor; >>>> >>>> public class zoomer_ implements PlugIn { >>>> >>>> public int height = 100; >>>> public int width = 100; >>>> public int roiheight = 100; >>>> public int roiwidth = 100; >>>> >>>> String NAME; >>>> public void run(String arg) >>>> { >>>> ImagePlus img=IJ.getImage(); >>>> height=img.getHeight(); >>>> width=img.getWidth(); >>>> Roi roi = img.getRoi(); >>>> if (roi==null) >>>> { >>>> IJ.showMessage("Please select an roi then try again"); >>>> return; >>>> } >>>> >>>> String NAME=img.getTitle(); >>>> double scale=80; >>>> scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); >>>> roiwidth=(int)roi.getBounds().getWidth(); >>>> roiheight=(int)roi.getBounds().getHeight(); >>>> int w =(int)( width*(scale/100f)); >>>> int h = (int)( height*(scale/100f)); >>>> >>>> int cx = (int)roi.getBounds().getCenterX(); >>>> int cy = (int)roi.getBounds().getCenterY(); >>>> //scale it each time by the same amount >>>> //the user determines the amount by >>>> //inputting a number for the rate of scaling >>>> //e.g., if the rate of scaling is 50, >>>> //then the roi is always 50% of the current size >>>> >>>> ImageStack s= new ImageStack(width, height); >>>> ImageProcessor ip = img.getProcessor(); >>>> ip.snapshot(); >>>> for (int i = w, j = h; >>>> (i > roiwidth)&&(j>roiheight); >>>> i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) >>>> { >>>> IJ.makeRectangle >>>> (cx-i/2,cy-j/2, i, j); >>>> IJ.run("Size...", >>>> "width="+width+ >>>> " height="+height+ >>>> " constrain interpolate"); >>>> String name=NAME+i; >>>> if(WindowManager.getCurrentImage >>>> ().getHeight()!=height|| >>>> WindowManager.getCurrentImage >>>> ().getWidth()!=width) >>>> IJ.run("Canvas Size...", "width="+width+ >>>> " height="+height+" position=Center"); >>>> s.addSlice(name, img.getProcessor().duplicate()); >>>> // WindowManager.getCurrentImage >>>> ().getProcessor()); >>>> IJ.run("Revert"); >>>> } >>>> IJ.run("Revert"); >>>> img.setRoi(roi); >>>> StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", >>>> s)); >>>> sw.setVisible(true); >>>> // IJ.saveAs("AVI... ", "myfileZoom.avi"); >>>> >>>> } >>>> >>>> >>>> } >>>> >>>> >>>> >>>> ----- Original Message ---- >>>> From: Younes Leysi Derilou <[hidden email]> >>>> To: [hidden email] >>>> Sent: Wednesday, December 5, 2007 7:11:28 AM >>>> Subject: zooming on a region >>>> >>>> Hello ImageJ Users, >>>> >>>> I am wondering if there is a pluging to do zooming in/out in an >>>> image >>>> or >>>> image stack and save this action as a movie. >>>> any help is highly appreciated in advance. >>>> >>>> Sincerely, >>>> Younes >>>> >> |
Hello Audrey and David,
Thanks so much for your help. I found that the text was misplaced in my email (gmail service). Copying the correct form of the text solved the problem. The plugin works very well, as perfect as the Google map. it sounds 95% scaling is a proper zooming rate to make a movie. Thanks again and best regards, Younes On Dec 6, 2007 2:07 PM, David Hovis <[hidden email]> wrote: > You are missing a } somewhere. You need to copy and paste starting > from: > > import ij.*; > > All the way down to the last curly brace }. > > > --David > > On Dec 6, 2007, at 12:44 PM, Younes Leysi Derilou wrote: > > > Hello David, > > > > Thanks so much for your help. I followed your instruction, but got > > an error > > as following. could you please help me more. > > > > Thanks so much and Best Regards, > > Younes > > > > Note: sun.tools.javac.Main has been deprecated. > > C:\MBF_ImageJ\plugins\zoomer_.java:68: '}' expected. > > sw.setVisible(true); > > ^ > > 1 error, 1 warning > > > > > > > > > > On Dec 6, 2007 10:51 AM, David Hovis <[hidden email]> wrote: > > > >> That wasn't a macro, it was a plugin. > >> > >> You need to save it in a file called zoomer_.java, and put it in your > >> plugins folder. You can then use the Plugins->Compile and Run... > >> > >> --David > >> ---------------------------------------- > >> David Hovis > >> Senior Research Associate > >> Department of Materials Science > >> Case Western Reserve University > >> [hidden email] > >> > >> On Dec 6, 2007, at 10:44 AM, Younes Leysi Derilou wrote: > >> > >>> Hello Dear Audrey, > >>> > >>> Thanks so much for your nice attention to my email and sending the > >>> macro. I > >>> saved the text as a macro in the IJ macros folder, opened an image > >>> and then > >>> run the macro. it shows an error that ''undefined variable in line 1 > >>> <import> ij.*". this comes up either I chose a region or not before > >>> running > >>> macro. sorry i am not good in macro writing. If I put "//" in the > >>> first > >>> line, the same error comes up for the next lines. I would appreciate > >>> it, if > >>> you could let me have a macro that I can run it easily. > >>> > >>> Thanks so much and best regards, > >>> Younes > >>> > >>> On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> > >>> wrote: > >>> > >>>> Hi. Wayne recently helped me with the below plugin, which I used > >>>> to make > >>>> some animations for a presentation. It zooms in until the selected > >>>> area is > >>>> the full screen size then you save the stack of images as an > >>>> animation in > >>>> ImageJ. I have been saving the stack as avi or animated gif files, > >>>> but in > >>>> the code here I slipped in a line that will also save it as an avi > >>>> into the > >>>> ij path, which you can uncomment // IJ.saveAs("AVI... ", > >>>> "myfileZoom.avi") > >>>> and change to save where you want. For animated gifs, I use the > >>>> gif stack > >>>> writer plugin. This code zooms from the onscreen image down to the > >>>> selection size, using a gradient set differently each time, which > >>>> is what I > >>>> needed, but Wayne wrote some code that zooms starting with the > >>>> selection and > >>>> the way he did it is smoother and faster, I just haven't fully > >>>> implemented > >>>> it in this yet; you can find it in the list a few weeks back or > >>>> email me and > >>>> I will find it for you. Hope this helps. > >>>> > >>>> import ij.*; > >>>> import ij.gui.Roi; > >>>> import ij.gui.StackWindow; > >>>> import ij.plugin.*; > >>>> import ij.process.ImageProcessor; > >>>> > >>>> public class zoomer_ implements PlugIn { > >>>> > >>>> public int height = 100; > >>>> public int width = 100; > >>>> public int roiheight = 100; > >>>> public int roiwidth = 100; > >>>> > >>>> String NAME; > >>>> public void run(String arg) > >>>> { > >>>> ImagePlus img=IJ.getImage(); > >>>> height=img.getHeight(); > >>>> width=img.getWidth(); > >>>> Roi roi = img.getRoi(); > >>>> if (roi==null) > >>>> { > >>>> IJ.showMessage("Please select an roi then try again"); > >>>> return; > >>>> } > >>>> > >>>> String NAME=img.getTitle(); > >>>> double scale=80; > >>>> scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); > >>>> roiwidth=(int)roi.getBounds().getWidth(); > >>>> roiheight=(int)roi.getBounds().getHeight(); > >>>> int w =(int)( width*(scale/100f)); > >>>> int h = (int)( height*(scale/100f)); > >>>> > >>>> int cx = (int)roi.getBounds().getCenterX(); > >>>> int cy = (int)roi.getBounds().getCenterY(); > >>>> //scale it each time by the same amount > >>>> //the user determines the amount by > >>>> //inputting a number for the rate of scaling > >>>> //e.g., if the rate of scaling is 50, > >>>> //then the roi is always 50% of the current size > >>>> > >>>> ImageStack s= new ImageStack(width, height); > >>>> ImageProcessor ip = img.getProcessor(); > >>>> ip.snapshot(); > >>>> for (int i = w, j = h; > >>>> (i > roiwidth)&&(j>roiheight); > >>>> i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) > >>>> { > >>>> IJ.makeRectangle > >>>> (cx-i/2,cy-j/2, i, j); > >>>> IJ.run("Size...", > >>>> "width="+width+ > >>>> " height="+height+ > >>>> " constrain interpolate"); > >>>> String name=NAME+i; > >>>> if(WindowManager.getCurrentImage > >>>> ().getHeight()!=height|| > >>>> WindowManager.getCurrentImage > >>>> ().getWidth()!=width) > >>>> IJ.run("Canvas Size...", "width="+width+ > >>>> " height="+height+" position=Center"); > >>>> s.addSlice(name, img.getProcessor().duplicate()); > >>>> // WindowManager.getCurrentImage > >>>> ().getProcessor()); > >>>> IJ.run("Revert"); > >>>> } > >>>> IJ.run("Revert"); > >>>> img.setRoi(roi); > >>>> StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", > >>>> s)); > >>>> sw.setVisible(true); > >>>> // IJ.saveAs("AVI... ", "myfileZoom.avi"); > >>>> > >>>> } > >>>> > >>>> > >>>> } > >>>> > >>>> > >>>> > >>>> ----- Original Message ---- > >>>> From: Younes Leysi Derilou <[hidden email]> > >>>> To: [hidden email] > >>>> Sent: Wednesday, December 5, 2007 7:11:28 AM > >>>> Subject: zooming on a region > >>>> > >>>> Hello ImageJ Users, > >>>> > >>>> I am wondering if there is a pluging to do zooming in/out in an > >>>> image > >>>> or > >>>> image stack and save this action as a movie. > >>>> any help is highly appreciated in advance. > >>>> > >>>> Sincerely, > >>>> Younes > >>>> > >> > -- Younes Leysi-Derilou Chem Eng PhD Student Laval University, QC, Canada Phone: 418-656-2131 #6224 /16273 Cellphone: (418) 2626 726 |
In reply to this post by Younes Leysi
Hi, I just got back from a few days away. I'm glad we could help!
Audrey ----- Original Message ---- From: Younes Leysi Derilou <[hidden email]> To: [hidden email] Sent: Thursday, December 6, 2007 2:07:37 PM Subject: Re: zooming on a region Hello Audrey and David, Thanks so much for your help. I found that the text was misplaced in my email (gmail service). Copying the correct form of the text solved the problem. The plugin works very well, as perfect as the Google map. it sounds 95% scaling is a proper zooming rate to make a movie. Thanks again and best regards, Younes On Dec 6, 2007 2:07 PM, David Hovis <[hidden email]> wrote: > You are missing a } somewhere. You need to copy and paste starting > from: > > import ij.*; > > All the way down to the last curly brace }. > > > --David > > On Dec 6, 2007, at 12:44 PM, Younes Leysi Derilou wrote: > > > Hello David, > > > > Thanks so much for your help. I followed your instruction, but got > > an error > > as following. could you please help me more. > > > > Thanks so much and Best Regards, > > Younes > > > > Note: sun.tools.javac.Main has been deprecated. > > C:\MBF_ImageJ\plugins\zoomer_.java:68: '}' expected. > > sw.setVisible(true); > > ^ > > 1 error, 1 warning > > > > > > > > > > On Dec 6, 2007 10:51 AM, David Hovis <[hidden email]> wrote: > > > >> That wasn't a macro, it was a plugin. > >> > >> You need to save it in a file called zoomer_.java, and put it in > >> plugins folder. You can then use the Plugins->Compile and Run... > >> > >> --David > >> ---------------------------------------- > >> David Hovis > >> Senior Research Associate > >> Department of Materials Science > >> Case Western Reserve University > >> [hidden email] > >> > >> On Dec 6, 2007, at 10:44 AM, Younes Leysi Derilou wrote: > >> > >>> Hello Dear Audrey, > >>> > >>> Thanks so much for your nice attention to my email and sending > >>> macro. I > >>> saved the text as a macro in the IJ macros folder, opened an image > >>> and then > >>> run the macro. it shows an error that ''undefined variable in line 1 > >>> <import> ij.*". this comes up either I chose a region or not before > >>> running > >>> macro. sorry i am not good in macro writing. If I put "//" in the > >>> first > >>> line, the same error comes up for the next lines. I would appreciate > >>> it, if > >>> you could let me have a macro that I can run it easily. > >>> > >>> Thanks so much and best regards, > >>> Younes > >>> > >>> On Dec 5, 2007 1:56 PM, audrey karperien <[hidden email]> > >>> wrote: > >>> > >>>> Hi. Wayne recently helped me with the below plugin, which I > >>>> to make > >>>> some animations for a presentation. It zooms in until the selected > >>>> area is > >>>> the full screen size then you save the stack of images as an > >>>> animation in > >>>> ImageJ. I have been saving the stack as avi or animated gif files, > >>>> but in > >>>> the code here I slipped in a line that will also save it as an avi > >>>> into the > >>>> ij path, which you can uncomment // IJ.saveAs("AVI... ", > >>>> "myfileZoom.avi") > >>>> and change to save where you want. For animated gifs, I use the > >>>> gif stack > >>>> writer plugin. This code zooms from the onscreen image down to the > >>>> selection size, using a gradient set differently each time, which > >>>> is what I > >>>> needed, but Wayne wrote some code that zooms starting with the > >>>> selection and > >>>> the way he did it is smoother and faster, I just haven't fully > >>>> implemented > >>>> it in this yet; you can find it in the list a few weeks back or > >>>> email me and > >>>> I will find it for you. Hope this helps. > >>>> > >>>> import ij.*; > >>>> import ij.gui.Roi; > >>>> import ij.gui.StackWindow; > >>>> import ij.plugin.*; > >>>> import ij.process.ImageProcessor; > >>>> > >>>> public class zoomer_ implements PlugIn { > >>>> > >>>> public int height = 100; > >>>> public int width = 100; > >>>> public int roiheight = 100; > >>>> public int roiwidth = 100; > >>>> > >>>> String NAME; > >>>> public void run(String arg) > >>>> { > >>>> ImagePlus img=IJ.getImage(); > >>>> height=img.getHeight(); > >>>> width=img.getWidth(); > >>>> Roi roi = img.getRoi(); > >>>> if (roi==null) > >>>> { > >>>> IJ.showMessage("Please select an roi then try > >>>> return; > >>>> } > >>>> > >>>> String NAME=img.getTitle(); > >>>> double scale=80; > >>>> scale=IJ.getNumber("Rate of Scaling (%)?", (double)scale); > >>>> roiwidth=(int)roi.getBounds().getWidth(); > >>>> roiheight=(int)roi.getBounds().getHeight(); > >>>> int w =(int)( width*(scale/100f)); > >>>> int h = (int)( height*(scale/100f)); > >>>> > >>>> int cx = (int)roi.getBounds().getCenterX(); > >>>> int cy = (int)roi.getBounds().getCenterY(); > >>>> //scale it each time by the same amount > >>>> //the user determines the amount by > >>>> //inputting a number for the rate of scaling > >>>> //e.g., if the rate of scaling is 50, > >>>> //then the roi is always 50% of the current size > >>>> > >>>> ImageStack s= new ImageStack(width, height); > >>>> ImageProcessor ip = img.getProcessor(); > >>>> ip.snapshot(); > >>>> for (int i = w, j = h; > >>>> (i > roiwidth)&&(j>roiheight); > >>>> i=(int)( i*(scale/100f)), j=(int)( j*(scale/100f))) > >>>> { > >>>> IJ.makeRectangle > >>>> (cx-i/2,cy-j/2, i, j); > >>>> IJ.run("Size...", > >>>> "width="+width+ > >>>> " height="+height+ > >>>> " constrain interpolate"); > >>>> String name=NAME+i; > >>>> if(WindowManager.getCurrentImage > >>>> ().getHeight()!=height|| > >>>> WindowManager.getCurrentImage > >>>> ().getWidth()!=width) > >>>> IJ.run("Canvas Size...", "width="+width+ > >>>> " height="+height+" position=Center"); > >>>> s.addSlice(name, img.getProcessor().duplicate()); > >>>> // WindowManager.getCurrentImage > >>>> ().getProcessor()); > >>>> IJ.run("Revert"); > >>>> } > >>>> IJ.run("Revert"); > >>>> img.setRoi(roi); > >>>> StackWindow sw=new StackWindow(new ImagePlus(NAME+"Zoom", > >>>> s)); > >>>> sw.setVisible(true); > >>>> // IJ.saveAs("AVI... ", "myfileZoom.avi"); > >>>> > >>>> } > >>>> > >>>> > >>>> } > >>>> > >>>> > >>>> > >>>> ----- Original Message ---- > >>>> From: Younes Leysi Derilou <[hidden email]> > >>>> To: [hidden email] > >>>> Sent: Wednesday, December 5, 2007 7:11:28 AM > >>>> Subject: zooming on a region > >>>> > >>>> Hello ImageJ Users, > >>>> > >>>> I am wondering if there is a pluging to do zooming in/out in an > >>>> image > >>>> or > >>>> image stack and save this action as a movie. > >>>> any help is highly appreciated in advance. > >>>> > >>>> Sincerely, > >>>> Younes > >>>> > >> > -- Younes Leysi-Derilou Chem Eng PhD Student Laval University, QC, Canada Phone: 418-656-2131 #6224 /16273 Cellphone: (418) 2626 726 |
Free forum by Nabble | Edit this page |