Changeset 2110


Ignore:
Timestamp:
01/17/07 10:02:44 (13 years ago)
Author:
melissa
Message:

Various bugfixes.

Location:
trunk/loci/formats
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ChannelSeparator.java

    r2039 r2110  
    4343  /** Determines the number of images in the given file. */ 
    4444  public int getImageCount(String id) throws FormatException, IOException { 
    45     return reader.isRGB(id) ? getSizeC(id) * reader.getImageCount(id) : 
     45    return reader.isRGB(id) ?  
     46      (getSizeC(id) / reader.getEffectiveSizeC(id)) * reader.getImageCount(id) : 
    4647      reader.getImageCount(id); 
    4748  } 
     
    122123 
    123124    if (reader.isRGB(id)) { 
    124       int c = getSizeC(id); 
     125      int c = getSizeC(id) / reader.getEffectiveSizeC(id); 
    125126      int source = no / c; 
    126127      int channel = no % c; 
  • trunk/loci/formats/FileWrapper.java

    r2081 r2110  
    122122      } 
    123123      catch (IOException e) { 
    124         /* debug */ e.printStackTrace(); 
    125124        return false; 
    126125      } 
  • trunk/loci/formats/FormatReader.java

    r2102 r2110  
    956956   */ 
    957957  public static int getEffectiveSizeC(boolean rgb, int sizeC) { 
    958     return rgb ? (sizeC + 2) / 3 : sizeC; 
     958    if (sizeC <= 4) { 
     959      return rgb ? (sizeC + 3) / 4 : sizeC; 
     960    } 
     961    else if (sizeC % 3 == 0) return rgb ? sizeC / 3 : sizeC; 
     962    return rgb ? sizeC / 4 : sizeC; 
    959963  } 
    960964 
  • trunk/loci/formats/TiffTools.java

    r2090 r2110  
    979979        // case 1: we're still within bitsPerSample array bounds 
    980980        if (i < bitsPerSample.length) { 
     981          if (i == samplesPerPixel) { 
     982            bitsPerSample[i] = 0; 
     983            lastBitsZero = true; 
     984          } 
     985 
    981986          // remember that the universe collapses when we divide by 0 
    982987          if (bitsPerSample[i] != 0) { 
  • trunk/loci/formats/in/ND2Reader.java

    r2078 r2110  
    5656      r = new ReflectedUniverse(); 
    5757      r.exec("import jj2000.j2k.fileformat.reader.FileFormatReader"); 
     58      r.exec("import jj2000.j2k.io.BEBufferedRandomAccessFile"); 
    5859      r.exec("import jj2000.j2k.util.ISRandomAccessIO"); 
    5960    } 
     
    219220 
    220221    try { 
    221       r.setVar("id", in); 
    222       r.exec("in = new ISRandomAccessIO(id)"); 
     222      File f = new File(getMappedId(id)); 
     223      if (f.exists()) { 
     224        r.setVar("id", getMappedId(id)); 
     225        r.setVar("read", "r"); 
     226        r.setVar("size", 4096); 
     227        r.exec("in = new BEBufferedRandomAccessFile(id, read, size)"); 
     228      } 
     229      else { 
     230        r.setVar("id", in); 
     231        r.setVar("size", 65536); 
     232        r.setVar("inc", 4096); 
     233        r.setVar("max", (int) in.length()); 
     234        r.exec("in = new ISRandomAccessIO(id, size, inc, max)"); 
     235      } 
     236 
    223237      r.setVar("j2kMetadata", null); 
    224238      r.exec("ff = new FileFormatReader(in, j2kMetadata)"); 
     
    231245 
    232246    numImages = offsets.length; 
    233  
    234     /* debug */ System.out.println("num images : " + numImages); 
    235247 
    236248    pixelType[0] = FormatReader.UINT8; 
     
    338350    } 
    339351 
    340     String m = "MetadataSeq _SEQUENCE_INDEX=\"0\""; 
    341     String x = (String) metadata.get(m + " right value"); 
    342     String y = (String) metadata.get(m + " bottom value"); 
    343     if (x != null) sizeX[0] = Integer.parseInt(x); 
    344     if (y != null) sizeY[0] = Integer.parseInt(y); 
    345  
    346     if (sizeX[0] == 0 || sizeY[0] == 0) { 
    347       String s = (String) metadata.get("ReportObjects " + 
    348         "_DOCTYPE=\"ReportObjectsDocument\" _VERSION=\"1.100000\" " + 
    349         "Container page_size"); 
    350       if (s != null) { 
    351         x = s.substring(1, s.indexOf(",")); 
    352         sizeX[0] = (int) Float.parseFloat(x); 
    353         y = s.substring(s.indexOf(",") + 1, s.indexOf(")")); 
    354         sizeY[0] = (int) Float.parseFloat(y); 
    355       } 
    356       else { 
    357         BufferedImage img = openImage(id, 0); 
    358         sizeX[0] = img.getWidth(); 
    359         sizeY[0] = img.getHeight(); 
    360       } 
    361     } 
     352    BufferedImage img = openImage(id, 0); 
     353    sizeX[0] = img.getWidth(); 
     354    sizeY[0] = img.getHeight(); 
    362355 
    363356    int numInvalid = 0; 
     
    448441        } 
    449442      } 
    450       if (sizeZ[0] == numImages) { 
     443      else if (sizeZ[0] == numImages) { 
    451444        sizeZ[0] /= sizeT[0] * getEffectiveSizeC(id); 
    452445        while (numImages > sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     
    454447        } 
    455448      } 
    456     } 
    457  
    458     if (numImages != sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
    459       sizeZ[0] = numImages; 
    460       sizeT[0] = 1; 
    461       orderCertain[0] = false; 
     449       
     450      if (numImages < sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     451        if (sizeZ[0] < sizeT[0]) { 
     452          sizeZ[0]--; 
     453          while (numImages > sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     454            sizeT[0]++; 
     455          } 
     456          while (numImages < sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     457            sizeT[0]--; 
     458          } 
     459        } 
     460        else { 
     461          sizeT[0]--; 
     462          while (numImages > sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     463            sizeZ[0]++; 
     464          } 
     465          if (numImages < sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     466            sizeZ[0]--; 
     467          } 
     468        } 
     469        while (numImages > sizeZ[0] * sizeT[0] * getEffectiveSizeC(id)) { 
     470          numImages--; 
     471        } 
     472      } 
    462473    } 
    463474 
  • trunk/loci/formats/in/ZeissLSMReader.java

    r2078 r2110  
    402402          break; 
    403403        default: 
    404           pixelType[0] = FormatReader.UINT8; 
     404          pixelType[0] = -1; 
     405      } 
     406 
     407      if (pixelType[0] == -1) { 
     408        int[] bps = TiffTools.getBitsPerSample(ifd); 
     409        switch (bps[0]) { 
     410          case 8: pixelType[0] = FormatReader.UINT8; break; 
     411          case 16: pixelType[0] = FormatReader.UINT16; break; 
     412          case 32: pixelType[0] = FormatReader.FLOAT; break; 
     413          default: pixelType[0] = FormatReader.UINT8; 
     414        } 
    405415      } 
    406416 
     
    758768    put("Rectangle-" + suffix, in.read()); 
    759769    put("Line-" + suffix, in.read()); 
    760     int drawingEl = (size - 194) / nde; 
    761     for (int i=0; i<nde; i++) { 
    762       byte[] draw = new byte[drawingEl]; 
    763       in.read(draw); 
    764       put("DrawingElement" + i + "-" + suffix, new String(draw)); 
     770    try { 
     771      int drawingEl = (size - 194) / nde; 
     772      for (int i=0; i<nde; i++) { 
     773        byte[] draw = new byte[drawingEl]; 
     774        in.read(draw); 
     775        put("DrawingElement" + i + "-" + suffix, new String(draw)); 
     776      } 
     777    } 
     778    catch (ArithmeticException e) { 
     779      if (debug) e.printStackTrace(); 
    765780    } 
    766781  } 
  • trunk/loci/formats/in/ZeissZVIReader.java

    r2104 r2110  
    232232    throws FormatException, IOException 
    233233  { 
    234     super.swapDimensions(id, order); 
    235234    if (noPOI || needLegacy) legacy.swapDimensions(id, order); 
     235    else super.swapDimensions(id, order); 
    236236  } 
    237237 
     
    289289        System.arraycopy(tmp, 0, a, 0, a.length); 
    290290      } 
    291  
    292291      return a; 
    293292    } 
     
    351350    tIndices = new Vector(); 
    352351 
     352    sizeX = new int[1]; 
     353    sizeY = new int[1]; 
     354    sizeZ = new int[1]; 
     355    sizeC = new int[1]; 
     356    sizeT = new int[1]; 
     357    pixelType = new int[1]; 
     358    currentOrder = new String[1]; 
     359    orderCertain = new boolean[] {true}; 
     360 
    353361    nImages = 0; 
    354362 
     
    371379      zSize = zIndices.size(); 
    372380      tSize = tIndices.size(); 
    373       if (nChannels != cIndices.size()) nChannels *= cIndices.size(); 
    374  
    375       sizeX = new int[1]; 
    376       sizeY = new int[1]; 
    377       sizeZ = new int[1]; 
    378       sizeC = new int[1]; 
    379       sizeT = new int[1]; 
    380       pixelType = new int[1]; 
    381       currentOrder = new String[1]; 
    382       orderCertain = new boolean[] {true}; 
     381      if (nChannels != cIndices.size()) nChannels *= cIndices.size();  
    383382 
    384383      sizeX[0] = width; 
     
    387386      sizeC[0] = nChannels; 
    388387      sizeT[0] = tSize; 
     388 
     389      nImages = sizeZ[0] * sizeT[0] * getEffectiveSizeC(id); 
    389390 
    390391      String s = (String) metadata.get("Acquisition Bit Depth"); 
Note: See TracChangeset for help on using the changeset viewer.