Changeset 2458


Ignore:
Timestamp:
03/15/07 10:41:30 (13 years ago)
Author:
melissa
Message:

Only allow merging if there are 2 or 3 channels; otherwise display a warning (and the grayscale stack).

File:
1 edited

Legend:

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

    r2430 r2458  
    11391139      // convert to RGB if needed 
    11401140 
    1141       if (mergeChannels && r.getSizeC(id) > 1) { 
     1141      if (mergeChannels && r.getSizeC(id) > 1 && r.getSizeC(id) < 4) { 
    11421142        int c = r.getSizeC(id); 
    11431143        ImageStack s = imp.getStack(); 
     
    11561156        int sizeT = r.getSizeT(id); 
    11571157 
    1158         int extraC = 1; 
    1159         if (c > 4) { 
    1160           extraC *= (c % 3 == 0 ? 4 : 3); 
    1161           c /= extraC; 
    1162         } 
    1163  
    11641158        for (int z=0; z<sizeZ; z++) { 
    11651159          for (int t=0; t<sizeT; t++) { 
    11661160            byte[][] bytes = new byte[c][]; 
    1167             for (int ch1=0; ch1<extraC; ch1++) { 
    1168               for (int ch2=0; ch2<c; ch2++) { 
    1169                 int ndx = r.getIndex(id, z, ch1*c + ch2, t) + 1; 
    1170                 bytes[ch2] = (byte[]) s.getProcessor(ndx).getPixels(); 
    1171               } 
    1172               ColorProcessor cp = 
    1173                 new ColorProcessor(s.getWidth(), s.getHeight()); 
    1174               cp.setRGB(bytes[0], bytes[1], bytes.length == 3 ? bytes[2] : 
    1175                 new byte[s.getWidth() * s.getHeight()]); 
    1176               int ndx = r.getIndex(id, z, ch1*c + c - 1, t) + 1; 
    1177               newStack.addSlice(s.getSliceLabel(ndx), cp); 
    1178             } 
     1161            for (int ch1=0; ch1<c; ch1++) { 
     1162              int ndx = r.getIndex(id, z, ch1, t) + 1; 
     1163              bytes[ch1] = (byte[]) s.getProcessor(ndx).getPixels(); 
     1164            } 
     1165            ColorProcessor cp = 
     1166              new ColorProcessor(s.getWidth(), s.getHeight()); 
     1167            cp.setRGB(bytes[0], bytes[1], bytes.length == 3 ? bytes[2] : 
     1168              new byte[s.getWidth() * s.getHeight()]); 
     1169            int ndx = r.getIndex(id, z, c - 1, t) + 1; 
     1170            newStack.addSlice(s.getSliceLabel(ndx), cp); 
    11791171          } 
    11801172        } 
    11811173        imp.setStack(imp.getTitle(), newStack); 
     1174      } 
     1175      else if (mergeChannels && r.getSizeC(id) >= 4) { 
     1176        IJ.showMessage("Can only merge 2 or 3 channels."); 
    11821177      } 
    11831178 
Note: See TracChangeset for help on using the changeset viewer.