Changeset 3048


Ignore:
Timestamp:
08/06/07 14:11:28 (13 years ago)
Author:
curtis
Message:

More optimizations for ND2 initialization step.

File:
1 edited

Legend:

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

    r3045 r3048  
    254254      in.order(true); 
    255255 
     256      byte[] b = new byte[1024 * 1024]; 
    256257      while (in.getFilePointer() < in.length()) { 
    257258        if (in.read() == -38 && in.read() == -50 && in.read() == -66 && 
     
    260261          // found a data chunk 
    261262          int len = in.readInt() + in.readInt(); 
     263          if (len > b.length) b = new byte[b.length + b.length]; 
    262264          in.skipBytes(4); 
    263265 
    264           byte[] b = new byte[len]; 
    265           in.read(b); 
    266  
    267           String check = new String(b, 0, 12); 
    268  
    269           if (check.equals("ImageDataSeq")) { 
     266          in.readFully(b, 0, len); 
     267 
     268          if (len >= 12 && b[0] == 'I' && b[1] == 'm' && b[2] == 'a' && 
     269            b[3] == 'g' && b[4] == 'e' && b[5] == 'D' && b[6] == 'a' && 
     270            b[7] == 't' && b[8] == 'a' && b[9] == 'S' && b[10] == 'e' && 
     271            b[11] == 'q') // b.startsWith("ImageDataSeq") 
     272          { 
    270273            // found pixel data 
    271274           
     
    284287            offsets[ndx] = in.getFilePointer() - len + sb.length() + 21; 
    285288          } 
    286           else if (check.startsWith("Image")) { 
     289          //else if (check.startsWith("Image")) { 
     290          else if (len >= 5 && b[0] == 'I' && b[1] == 'm' && b[2] == 'a' && 
     291            b[3] == 'g' && b[4] == 'e') // b.startsWith("Image") 
     292          { 
    287293            // XML metadata 
    288294 
     
    291297            // strip out invalid characters 
    292298            int off = 0; 
    293             for (int i=0; i<b.length; i++) { 
     299            for (int i=0; i<len; i++) { 
    294300              char c = (char) b[i]; 
    295301              if (off == 0 && c == '!') off = i + 1;  
     
    304310            { 
    305311              ByteArrayInputStream s =  
    306                 new ByteArrayInputStream(b, off, b.length - off); 
     312                new ByteArrayInputStream(b, off, len - off); 
    307313 
    308314              try { 
Note: See TracChangeset for help on using the changeset viewer.