Changeset 1835


Ignore:
Timestamp:
11/21/06 08:39:28 (14 years ago)
Author:
melissa
Message:

Tweaked ImageTools.make24Bits.

File:
1 edited

Legend:

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

    r1834 r1835  
    945945    byte[] b = null; 
    946946 
     947    // adapted from ImageJ's TypeConverter methods 
     948 
    947949    if (pixels instanceof byte[]) b = (byte[]) pixels; 
    948950    else if (pixels instanceof short[]) { 
    949951      short[] s = (short[]) pixels; 
    950952      b = new byte[s.length]; 
    951       for (int i=0; i<s.length; i++) b[i] = (byte) ((255 * s[i]) / 65535); 
     953      for (int i=0; i<s.length; i++) { 
     954        int v = s[i] & 0xffff; 
     955        if (v > 255) v = 255; 
     956        b[i] = (byte) v; 
     957      } 
    952958    } 
    953959    else if (pixels instanceof int[]) { 
    954960      int[] s = (int[]) pixels; 
    955961      b = new byte[s.length]; 
    956       for (int i=0; i<s.length; i++) b[i] = (byte) ((255 * s[i]) / 4294967295L); 
     962      for (int i=0; i<s.length; i++) { 
     963        int value = s[i] & 0xffffffff; 
     964        if (value > 255) value = 255; 
     965        b[i] = (byte) value; 
     966      } 
    957967    } 
    958968    else if (pixels instanceof float[]) { 
     
    960970      b = new byte[s.length]; 
    961971      for (int i=0; i<s.length; i++) { 
    962         b[i] = (byte) ((255 * Float.floatToIntBits(s[i])) / 4294967295L); 
     972        float value = s[i]; 
     973        if (value < 0f) value = 0f; 
     974        if (value > 255f) value = 255f; 
     975        b[i] = (byte) Math.round(value); 
    963976      } 
    964977    } 
     
    967980      b = new byte[s.length]; 
    968981      for (int i=0; i<s.length; i++) { 
    969         b[i] = (byte) ((255 * Double.doubleToLongBits(s[i])) / 8589934590L); 
     982        double value = s[i]; 
     983        if (value < 0d) value = 0d; 
     984        if (value > 255d) value = 255d; 
     985        b[i] = (byte) Math.round(value); 
    970986      } 
    971987    } 
Note: See TracChangeset for help on using the changeset viewer.