Ignore:
Timestamp:
11/05/09 14:22:02 (11 years ago)
Author:
curtis
Message:

Vastly improved performance for Bio-Formats ITK plugin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/native/itk-plugin/itkBioFormatsImageIO.cxx

    r5671 r5672  
    108108  bool BioFormatsImageIO::CanReadFile(const char* FileNameToRead) { 
    109109    itkDebugMacro( 
    110       "BioFormatsImageIO::CanReadFile: FileNameToRead=" << FileNameToRead); 
     110      "BioFormatsImageIO::CanReadFile: FileNameToRead = " << FileNameToRead); 
    111111    std::string filename(FileNameToRead); 
    112112 
    113113    if (filename == "") { 
    114       itkDebugMacro("A FileName must be specified."); 
     114      itkDebugMacro("A file name must be specified."); 
    115115      return false; 
    116116    } 
     
    120120      // call Bio-Formats to check file type 
    121121      isType = reader->isThisType(filename); 
    122       itkDebugMacro("BioFormatsImageIO::CanReadFile: isType=" << isType); 
     122      itkDebugMacro("isType = " << isType); 
    123123    } 
    124124    catch (Exception& e) { 
     
    136136  void BioFormatsImageIO::ReadImageInformation() { 
    137137    itkDebugMacro( 
    138       "BioFormatsImageIO::ReadImageInformation: m_FileName=" << m_FileName); 
     138      "BioFormatsImageIO::ReadImageInformation: m_FileName = " << m_FileName); 
    139139 
    140140    try { 
     
    149149 
    150150      int seriesCount = reader->getSeriesCount(); 
    151       itkDebugMacro("\tSeriesCount = " << seriesCount); 
     151      itkDebugMacro("Series count = " << seriesCount); 
    152152 
    153153      // set ITK byte order 
     
    159159      int pixelType = reader->getPixelType(); 
    160160      int bpp = FormatTools::getBytesPerPixel(pixelType); 
    161       itkDebugMacro("\tBytes per pixel = " << bpp); 
     161      itkDebugMacro("Bytes per pixel = " << bpp); 
    162162      IOComponentType itkComponentType; 
    163163      if (pixelType == FormatTools::UINT8()) 
     
    236236      if (imageCount > 1) m_Spacing[2] = 1; 
    237237 
    238       itkDebugMacro("Physical resolution: " << physX << " x " << physY); 
     238      itkDebugMacro("Physical resolution = " << physX << " x " << physY); 
    239239    } 
    240240    catch (Exception& e) { 
     
    313313        } 
    314314      } 
    315       int bytesPerSubPlane = xCount * yCount * bpp * rgbChannelCount; 
     315      int bytesPerPlane = xCount * yCount * bpp * rgbChannelCount; 
    316316 
    317317      itkDebugMacro("Region extents:" << std::endl 
     
    322322        << "\tT: start = " << tStart << ", count = " << tCount << std::endl 
    323323        << "\tC: start = " << cStart << ", count = " << cCount << std::endl 
    324         << "\tBytes per plane = " << bytesPerSubPlane); 
     324        << "\tBytes per plane = " << bytesPerPlane); 
    325325 
    326326      int imageCount = reader->getImageCount(); 
    327327 
    328       int p = 0; 
    329       //ByteArray buf(bytesPerSubPlane); // pre-allocate buffer 
     328      jbyte* jData = (jbyte*) data; 
     329      //ByteArray buf(bytesPerPlane); // pre-allocate buffer 
    330330      for (int c=cStart; c<cCount; c++) { 
    331331        for (int t=tStart; t<tCount; t++) { 
     
    338338            ByteArray buf = reader->openBytes(no, 
    339339              xStart, yStart, xCount, yCount); 
    340             for (int i=0; i<bytesPerSubPlane; i++) { 
    341               itkDebugMacro("\tdata #" << i << " = " << buf[i]); 
    342               data[p++] = buf[i]; 
    343             } 
     340 
     341            // copy raw byte array 
     342            JNIEnv* env = jace::helper::attach(); 
     343            jbyteArray jArray = static_cast<jbyteArray>(buf.getJavaJniArray()); 
     344            env->GetByteArrayRegion(jArray, 0, bytesPerPlane, jData); 
     345            jData += bytesPerPlane; 
    344346          } 
    345347        } 
     
    362364 
    363365  bool BioFormatsImageIO::CanWriteFile(const char* name) { 
    364     itkDebugMacro("BioFormatsImageIO::CanWriteFile: name=" << name); 
     366    itkDebugMacro("BioFormatsImageIO::CanWriteFile: name = " << name); 
    365367    std::string filename(name); 
    366368 
     
    375377      ImageWriter writer; 
    376378      isType = writer.isThisType(filename); 
    377       itkDebugMacro("BioFormatsImageIO::CanWriteFile: isType=" << isType); 
     379      itkDebugMacro("isType = " << isType); 
    378380    } 
    379381    catch (Exception& e) { 
Note: See TracChangeset for help on using the changeset viewer.