Changeset 2898


Ignore:
Timestamp:
06/20/07 10:19:14 (12 years ago)
Author:
melissa
Message:

Fixed floating point and RGB images.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/KhorosReader.java

    r2831 r2898  
    5555  public byte[] openBytes(int no) throws FormatException, IOException { 
    5656    FormatTools.assertId(currentId, true, 1);  
    57     byte[] buf = new byte[core.sizeX[0] * core.sizeY[0] * getRGBChannelCount()]; 
     57    byte[] buf = new byte[core.sizeX[0] * core.sizeY[0] * core.sizeC[0] * 
     58      FormatTools.getBytesPerPixel(core.pixelType[0])]; 
    5859    return openBytes(no, buf); 
    5960  } 
     
    6768      throw new FormatException("Invalid image number: " + no); 
    6869    } 
    69      
     70    
    7071    in.seek(offset +  
    7172      no * (core.sizeX[0] * core.sizeY[0] * getRGBChannelCount())); 
     
    9697      for (int i=0; i<f.length; i++) { 
    9798        f[i] = Float.intBitsToFloat(DataTools.bytesToInt(b,  
    98           i*4, core.littleEndian[0])); 
     99          i*4, !core.littleEndian[0])); 
    99100      } 
     101       
    100102      return ImageTools.makeImage(f, core.sizeX[0], core.sizeY[0],  
    101103        core.sizeC[0], core.interleaved[0]);  
     
    166168    if (c > 1) { 
    167169      core.sizeC[0] = c; 
    168       lut = new byte[256 * c];  
    169       in.skipBytes(440); 
     170      int n = in.readInt(); 
     171      lut = new byte[n * c];  
     172      in.skipBytes(436); 
    170173 
    171174      for (int i=0; i<lut.length; i++) { 
    172175        int value = in.read();  
    173         if (i < 256) { 
     176        if (i < n) { 
    174177          lut[i*3] = (byte) value; 
    175178          lut[i*3 + 1] = (byte) value; 
    176179          lut[i*3 + 2] = (byte) value; 
    177180        } 
    178         else if (i < 512) { 
    179           lut[(i % 256)*3 + 1] = (byte) value; 
     181        else if (i < n*2) { 
     182          lut[(i % n)*3 + 1] = (byte) value; 
    180183        } 
    181         else if (i < 768) { 
    182           lut[(i % 256)*3 + 2] = (byte) value; 
     184        else if (i < n*3) { 
     185          lut[(i % n)*3 + 2] = (byte) value; 
    183186        } 
    184187      } 
Note: See TracChangeset for help on using the changeset viewer.