Changeset 1305


Ignore:
Timestamp:
08/21/06 11:09:27 (14 years ago)
Author:
melissa
Message:

fixed data browser to set all images in a stack to the same width and height

Location:
trunk/loci/plugins/browser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/browser/CacheManager.java

    r1271 r1305  
    5858 
    5959  /** Image dimensions. */ 
    60   private int x, y, ch; 
    61  
    62   /** Flag indicating endianness of the image. */ 
    63   private boolean littleEndian; 
     60  private int x, y; 
    6461 
    6562  // -- Constructor -- 
     
    8077      x = reader.getSizeX(filename); 
    8178      y = reader.getSizeY(filename); 
    82       ch = reader.getSizeC(filename); 
    83       littleEndian = reader.isLittleEndian(filename); 
    8479    } 
    8580    catch (Exception e) { } 
     
    108103    int p = getPosition(pos); 
    109104    if (p != -1) { 
    110       return createProcessor(cache.get(p), x, y, ch, littleEndian); 
     105      return createProcessor((BufferedImage) cache.get(p), x, y); 
    111106    } 
    112107 
    113108    updateCache(pos); 
    114109    p = getPosition(pos); 
    115     return createProcessor(cache.get(p), x, y, ch, littleEndian); 
     110    return createProcessor((BufferedImage) cache.get(p), x, y); 
    116111  } 
    117112 
     
    130125  public void init() { 
    131126    try { 
    132       if (!reader.isRGB(filename)) { 
    133         for (int i=0; i<cacheSize; i++) { 
    134           cache.add(trim(reader.openBytes(filename, i))); 
    135           numbers.add(new Integer(i)); 
    136         } 
    137       } 
    138       else { 
    139         for (int i=0; i<cacheSize; i++) { 
    140           cache.add(reader.openImage(filename, i)); 
    141           numbers.add(new Integer(i)); 
    142         } 
     127      for (int i=0; i<cacheSize; i++) { 
     128        cache.add(reader.openImage(filename, i)); 
     129        numbers.add(new Integer(i)); 
    143130      } 
    144131    } 
     
    171158          ((Integer) numbers.get(cacheSize - 1)).intValue() + 1; 
    172159        for (int i=lowerBound; i<upperBound; i++) { 
    173           if (!reader.isRGB(filename)) { 
    174             cache.add(trim(reader.openBytes(filename, i))); 
    175           } 
    176           else cache.add(reader.openImage(filename, i)); 
     160          cache.add(reader.openImage(filename, i)); 
    177161          numbers.add(new Integer(i)); 
    178162        } 
     
    190174        int count = 0; 
    191175        for (int i=lowerBound; i<upperBound; i++) { 
    192           if (!reader.isRGB(filename)) { 
    193             cache.add(count, trim(reader.openBytes(filename, i))); 
    194           } 
    195           else cache.add(count, reader.openImage(filename, i)); 
     176          cache.add(count, reader.openImage(filename, i)); 
    196177          numbers.add(count, new Integer(i)); 
    197178          count++; 
     
    212193      for (int i=lowerBound; i<upperBound; i++) { 
    213194        try { 
    214           if (!reader.isRGB(filename)) { 
    215             cache.add(trim(reader.openBytes(filename, i))); 
    216           } 
    217           else cache.add(reader.openImage(filename, i)); 
     195          cache.add(reader.openImage(filename, i)); 
    218196          numbers.add(new Integer(i)); 
    219197        } 
     
    228206   * assumed to contain all three channels in "RRR...GGG...BBB" order. 
    229207   */ 
    230   private ImageProcessor createProcessor(Object b, int w, int h, int c, 
    231     boolean little) 
    232   { 
    233     if (b instanceof BufferedImage) { 
    234       BufferedImage bi = (BufferedImage) b; 
    235  
    236       return (new ImagePlus(filename, bi)).getProcessor(); 
    237     } 
    238     else { 
    239       byte[] by = (byte[]) b; 
    240       if (by.length <= w * h) { 
    241         ByteProcessor proc = new ByteProcessor(w, h); 
    242         if (by.length == w * h) { 
    243           proc.setPixels(by); 
    244         } 
    245         else { 
    246           byte[] bytes = new byte[w * h]; 
    247           System.arraycopy(by, 0, bytes, 0, by.length); 
    248           proc.setPixels(bytes); 
    249         } 
    250         return proc; 
    251       } 
    252       else if (by.length <= w * h * 2) { 
    253         short[] shorts = new short[w * h]; 
    254         for (int i=0; i<by.length / 2; i++) { 
    255           shorts[i] = DataTools.bytesToShort(by, i*2, 2, little); 
    256         } 
    257         ShortProcessor proc = new ShortProcessor(w, h); 
    258         proc.setPixels(shorts); 
    259         return proc; 
    260       } 
    261       else if (by.length <= w * h * 4) { 
    262         int[] floats = new int[w * h]; 
    263         for (int i=0; i<by.length / 4; i++) { 
    264           floats[i] = DataTools.bytesToInt(by, i*4, little); 
    265         } 
    266         return new FloatProcessor(w, h, floats); 
    267       } 
    268     } 
    269     return null; 
    270   } 
    271  
    272   /** Trim a byte array to the correct size. */ 
    273   private byte[] trim(byte[] b) { 
    274     if (b.length < x * y) { 
    275       byte[] t = new byte[x * y]; 
    276       System.arraycopy(b, 0, t, 0, b.length); 
    277       return t; 
    278     } 
    279  
    280     byte[] t = new byte[x * y * (b.length / (x * y))]; 
    281     System.arraycopy(b, 0, t, 0, t.length); 
    282     return t; 
     208  private ImageProcessor createProcessor(BufferedImage b, int w, int h) { 
     209    b = ImageTools.padImage(b, w, h); 
     210    return (new ImagePlus(filename, b)).getProcessor(); 
    283211  } 
    284212 
  • trunk/loci/plugins/browser/LociDataBrowser.java

    r1284 r1305  
    214214 
    215215            stack = new ImageStack(cm.getSizeX(absname), cm.getSizeY(absname)); 
     216 
    216217            for (int i=0; i<size; i++) { 
    217218              stack.addSlice(absname + " : " + (i+1), manager.getSlice(i)); 
Note: See TracChangeset for help on using the changeset viewer.