Changeset 2921


Ignore:
Timestamp:
06/29/07 09:41:06 (12 years ago)
Author:
melissa
Message:

Use ij.CompositeImage when possible; fixed a few bugs in CustomImage.

Location:
trunk/loci/plugins
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/CustomImage.java

    r2915 r2921  
    66 
    77import ij.*; 
     8import ij.plugin.frame.ContrastAdjuster; 
    89import ij.process.*; 
    910import java.awt.*; 
    1011import java.awt.image.*; 
    11 import ij.plugin.frame.ContrastAdjuster; 
     12import loci.formats.FormatTools; 
    1213 
    1314/** Adapted from ij.CompositeImage - http://rsb.info.nih.gov/ij/ */ 
     
    2627        static int count; 
    2728        boolean singleChannel; 
    28  
    29         public CustomImage(ImagePlus imp, int channels) { 
    30                 ImageStack stack2; 
     29  protected String order; 
     30  protected int z, t; 
     31 
     32        public CustomImage(ImagePlus imp, String order, int z, int t, int channels) { 
     33    this.z = z; 
     34    this.t = t; 
     35    this.order = order; 
     36    ImageStack stack2; 
    3137                boolean isRGB = imp.getBitDepth() == 24; 
    3238                if (isRGB) stack2 = getRGBStack(imp); 
     
    117123                cip[currentChannel].setMinAndMax(iip.getMin(), iip.getMax()); 
    118124                if (singleChannel) { 
    119                         PixelGrabber pg = new PixelGrabber(cip[currentChannel].createImage(), 0, 0, 
    120         width, height, pixels[currentChannel], 0, width); 
     125                        PixelGrabber pg = new PixelGrabber(cip[currentChannel].createImage(),  
     126        0, 0, width, height, pixels[currentChannel], 0, width); 
    121127                        try { pg.grabPixels(); } 
    122128                        catch (InterruptedException e) { }; 
    123129                }  
    124130    else { 
    125                         for (int i=0; i<nChannels; ++i) { 
    126                                 PixelGrabber pg = new PixelGrabber( 
    127           cip[((currentSlice - 1) / nChannels) * nChannels + i].createImage(), 0, 
    128           0, width, height, pixels[i], 0, width); 
    129                                 try { pg.grabPixels(); } 
    130                                 catch (InterruptedException e){ }; 
    131                         } 
    132                 } 
     131      int[] coords = FormatTools.getZCTCoords(order, z, nChannels, t,  
     132        cip.length, currentSlice - 1);  
     133      coords[1] = 0;   
     134      for (int i=0; i<nChannels; ++i) { 
     135        int ndx = FormatTools.getIndex(order, z, nChannels, t, cip.length, 
     136          coords[0], i, coords[2]);   
     137        PixelGrabber pg = new PixelGrabber(cip[ndx].createImage(), 
     138          0, 0, width, height, pixels[i], 0, width); 
     139                        try { pg.grabPixels(); } 
     140                  catch (InterruptedException e){ }; 
     141      } 
     142    } 
    133143                if (singleChannel && nChannels <= 3) { 
    134144                        switch (currentChannel) { 
  • trunk/loci/plugins/Importer.java

    r2915 r2921  
    698698    } 
    699699    else if (mergeChannels && r.getSizeC() > 1 && r.getSizeC() < 4) { 
    700       imp = new CustomImage(imp, r.getSizeC()); 
     700      if (imp.getStackSize() == r.getSizeC() && !IJ.versionLessThan("1.38n")) { 
     701        // use reflection to construct CompositeImage, 
     702        // in case ImageJ version is too old 
     703        ReflectedUniverse ru = new ReflectedUniverse(); 
     704        try { 
     705          ru.exec("import ij.CompositeImage"); 
     706          ru.setVar("imp", imp); 
     707          ru.setVar("sizeC", r.getSizeC()); 
     708          imp = (ImagePlus) ru.exec("new CompositeImage(imp, sizeC)"); 
     709        } 
     710        catch (ReflectException exc) {  
     711          imp = new CustomImage(imp, r.getDimensionOrder(), r.getSizeZ(),  
     712            r.getSizeT(), r.getSizeC());  
     713        } 
     714      } 
     715      else { 
     716        imp = new CustomImage(imp, r.getDimensionOrder(), r.getSizeZ(),  
     717          r.getSizeT(), r.getSizeC()); 
     718      }  
    701719    } 
    702720    else if (mergeChannels && r.getSizeC() >= 4) { 
Note: See TracChangeset for help on using the changeset viewer.