Changeset 2052


Ignore:
Timestamp:
01/10/07 08:46:34 (13 years ago)
Author:
melissa
Message:
  • Fixed memory bug in Zeiss LSM.
  • Fixed bug with 2-channel BufferedImage construction in TiffTools.
Location:
trunk/loci/formats
Files:
2 edited

Legend:

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

    r2039 r2052  
    13861386      // ByteBuffer to transform to a ShortBuffer. Finally, use the ShortBuffer 
    13871387      // bulk get method to copy the data into a usable form for makeImage(). 
    1388       short[][] sampleData = new short[samples.length][samples[0].length / 2]; 
    1389       for (int i = 0; i < sampleData.length; i++) { 
     1388      int len = samples.length == 2 ? 3 : samples.length; 
     1389      short[][] sampleData = new short[len][samples[0].length / 2]; 
     1390      for (int i = 0; i < samples.length; i++) { 
    13901391        ShortBuffer sampleBuf = ByteBuffer.wrap(samples[i]).asShortBuffer(); 
    13911392        sampleBuf.get(sampleData[i]); 
  • trunk/loci/formats/in/ZeissLSMReader.java

    r2033 r2052  
    166166    try { 
    167167      long prevOffset = 0; 
     168      byte[] b = new byte[48]; 
     169      byte[] c = new byte[48]; 
    168170      for (int i=0; i<ifds.length; i++) { 
    169171        long subFileType = TiffTools.getIFDLongValue(ifds[i], 
     
    180182 
    181183          in.seek(prevOffset); 
    182           byte[] b = new byte[48]; 
    183184          in.read(b); 
    184185          in.seek(offsets[0]); 
    185           byte[] c = new byte[48]; 
    186186          in.read(c); 
    187187 
     
    446446        if (zSize > tSize) zSize++; 
    447447        else tSize++; 
     448      } 
     449 
     450      sizeC[0] = channels; 
     451      while (numImages > zSize * tSize * getEffectiveSizeC(currentId)) { 
     452        numImages--; 
    448453      } 
    449454 
     
    573578        in.seek((int) (pos + data + 8)); 
    574579 
    575         for (int i=0; i<numEvents; i++) { 
    576           in.readInt(); 
    577           ddata = in.readDouble(); 
    578           put("Time" + i, ddata); 
    579  
    580           data = in.readInt(); 
    581           put("EventType" + i, data); 
    582  
    583           if (numBytes > in.length() - in.getFilePointer()) { 
    584             numBytes = in.length() - in.getFilePointer(); 
     580        if (numEvents <= numImages) { 
     581          for (int i=0; i<numEvents; i++) { 
     582            in.readInt(); 
     583            ddata = in.readDouble(); 
     584            put("Time" + i, ddata); 
     585 
     586            data = in.readInt(); 
     587            put("EventType" + i, data); 
     588 
     589            if (numBytes > in.length() - in.getFilePointer()) { 
     590              numBytes = in.length() - in.getFilePointer(); 
     591            } 
     592            byte[] descr = new byte[(int) (numBytes - 16)]; 
     593            in.read(descr); 
     594            put("Description" + i, new String(descr)); 
    585595          } 
    586           byte[] descr = new byte[(int) (numBytes - 16)]; 
    587           in.read(descr); 
    588           put("Description" + i, new String(descr)); 
    589596        } 
    590597        in.seek(pos); 
Note: See TracChangeset for help on using the changeset viewer.