Changeset 6125


Ignore:
Timestamp:
04/14/10 11:50:11 (10 years ago)
Author:
curtis
Message:

Improve robustness of color map parsing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/NikonReader.java

    r6026 r6125  
    5959  // Tags that give a good indication of whether this is an NEF file. 
    6060  private static final int TIFF_EPS_STANDARD = 37398; 
     61  private static final int COLOR_MAP = 33422; 
    6162 
    6263  // Maker Note tags. 
     
    177178    src.close(); 
    178179 
    179     int[] colorMap = new int[4]; 
    180     short[] s = (short[]) ifd.get(new Integer(33422)); 
    181     for (int q=0; q<colorMap.length; q++) { 
    182       colorMap[q] = s[q]; 
    183       if (colorMap[q] > 2) { 
    184         // found invalid channel index, use default color map instead 
    185         colorMap[0] = 1; 
    186         colorMap[1] = 0; 
    187         colorMap[2] = 2; 
    188         colorMap[3] = 1; 
    189         break; 
     180    int[] colorMap = {1, 0, 2, 1}; // default color map 
     181    short[] ifdColors = (short[]) ifd.get(COLOR_MAP); 
     182    if (ifdColors != null && ifdColors.length >= colorMap.length) { 
     183      boolean colorsValid = true; 
     184      for (int q=0; q<colorMap.length; q++) { 
     185        if (ifdColors[q] < 0 || ifdColors[q] > 2) { 
     186          // found invalid channel index, use default color map instead 
     187          colorsValid = false; 
     188          break; 
     189        } 
     190      } 
     191      if (colorsValid) { 
     192        for (int q=0; q<colorMap.length; q++) { 
     193          colorMap[q] = ifdColors[q]; 
     194        } 
    190195      } 
    191196    } 
Note: See TracChangeset for help on using the changeset viewer.