[Insight-users] MetaImage: absolute path in ElementDataFile not working

Luis Ibanez luis.ibanez at kitware.com
Tue May 13 12:30:13 EDT 2008


Hi Florian,

Thanks for sending our files.

I'm not sure that MetaImage can manage
filenames that have spaces in the path....


Your file is located at:

      "C:\Program Files\Data\MyData.raw"


Just to double check,
Please do the following

   Move your .mhd and .raw files to a directory
   without spaces. Something like:

       C:\itktest\MyData.mhd
       C:\itktest\MyData.raw


Try to read them from that location,
and let us know what you find.

If you can read the files then we
should probably fill a bug report
regarding filenames with spaces
and the MetaImage library.


    Thanks


       Luis


-----------------------
Florian Pierron wrote:
> Hi Luis,
> 
> Thanks for your quick reply.
> 
> I am using VC2005 to compile the code. I don't see anything obviously 
> wrong with the path, it is:
> ElementDataFile = C:\Program Files\Data\MyData.raw
> 
> I have attached the .mha file and the .raw image. Let me know if you can 
> load it.
> 
> Regards,
> Florian
> 
> ***********************
> ObjectType = Image
> NDims = 2
> DimSize = 50 50
> ElementByteOrderMSB = False
> ElementNumberOfChannels = 1
> ElementType = MET_UCHAR
> ElementDataFile = C:\Program Files\Data\MyData.raw
> ***********************
> 
> 
> On 12/05/2008 14:50, Luis Ibanez wrote:
> 
>>
>> Hi Florian,
>>
>> Could you please post the *exact* absolute path that you were using
>> when you encounter this problem ?
>>
>> We are able to read files with absolute path without any problem.
>> It is therefore likely that there is something special about the
>> path that you were using.
>>
>> Also, please let us know what platform are you using.
>>
>>
>>    Thanks
>>
>>
>>       Luis
>>
>>
>> ---------------------
>> Florian Pierron wrote:
>>
>>> Dear ITK developer team,
>>>
>>> I noticed that having an absolute path in the ElementDataFile is not 
>>> supported in ITK 3.4.0. I don't know if there is a good reason for 
>>> that or if it's just by mistake but it seems that there is an easy 
>>> fix to that (if I am not wrong...). I have changed the following 
>>> lines in \Utilities\MetaIO\metaImage.cxx:
>>>
>>> - usePath = MET_GetFilePath(_headerName, pathName)
>>>
>>> by
>>>
>>> +  usePath = !MET_GetFilePath(elementDataFileName.c_str(), pathName) &&
>>> +                 MET_GetFilePath(_headerName, pathName);
>>>
>>> So that usePath (which determines in fact if the path to the header / 
>>> meta file should be append to the elementDataFileName) is used only 
>>> if the elementDataFileName is not an absolute path and if there is a 
>>> path for the header / meta file.
>>>
>>> Find attached the patch file.
>>>
>>> Regards,
>>> Florian
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> ### Eclipse Workspace Patch 1.0
>>> #P ITK_3_4_0
>>> Index: Utilities/MetaIO/metaImage.cxx
>>> ===================================================================
>>> RCS file: /cvsroot/Insight/Insight/Utilities/MetaIO/metaImage.cxx,v
>>> retrieving revision 1.76
>>> diff -u -r1.76 metaImage.cxx
>>> --- Utilities/MetaIO/metaImage.cxx    12 Sep 2007 11:46:05 -0000    1.76
>>> +++ Utilities/MetaIO/metaImage.cxx    12 May 2008 10:53:09 -0000
>>> @@ -3,7 +3,7 @@
>>>    Program:   MetaIO
>>>    Module:    $RCSfile: metaImage.cxx,v $
>>>    Language:  C++
>>> -  Date:      $Date: 2007-09-12 11:46:05 $
>>> +  Date:      $Date: 2007/09/12 11:46:05 $
>>>    Version:   $Revision: 1.76 $
>>>  
>>>    Copyright (c) Insight Software Consortium. All rights reserved.
>>> @@ -1118,10 +1118,6 @@
>>>      return false;
>>>      }
>>>  
>>> -  bool usePath;
>>> -  char pathName[255];
>>> -  usePath = MET_GetFilePath(_headerName, pathName);
>>> -
>>>    char* buf = new char[8001];
>>>    inputStream.read(buf,8000);
>>>    unsigned long fileSize = inputStream.gcount();
>>> @@ -1139,6 +1135,10 @@
>>>  
>>>    std::string elementDataFileName = 
>>> M_GetTagValue(header,"ElementDataFile");
>>>  
>>> +  char pathName[255];
>>> +  bool usePath = !MET_GetFilePath(elementDataFileName.c_str(), 
>>> pathName) && +                 MET_GetFilePath(_headerName, pathName);
>>> +
>>>    char* fName = new char[512];
>>>  
>>>    if(!strcmp("Local", elementDataFileName.c_str()) || @@ -1375,10 
>>> +1375,10 @@
>>>        }
>>>  
>>>      int i, j;
>>> -    bool usePath;
>>>      char pathName[255];
>>>      char fName[255];
>>> -    usePath = MET_GetFilePath(m_FileName, pathName);
>>> +    bool usePath = !MET_GetFilePath(m_ElementDataFileName, pathName) 
>>> && +                   MET_GetFilePath(m_FileName, pathName);
>>>  
>>>      if(!strcmp("Local", m_ElementDataFileName) ||         
>>> !strcmp("LOCAL", m_ElementDataFileName) ||
>>> @@ -1620,7 +1620,8 @@
>>>      }
>>>  
>>>    char pathName[255];
>>> -  bool usePath = MET_GetFilePath(m_FileName, pathName);
>>> +  bool usePath = !MET_GetFilePath(m_ElementDataFileName, pathName) 
>>> && +                 MET_GetFilePath(m_FileName, pathName);
>>>    if(usePath)
>>>      {
>>>      char elementPathName[255];
>>> @@ -2240,7 +2241,8 @@
>>>      {
>>>      char dataFileName[255];
>>>      char pathName[255];
>>> -    bool usePath = MET_GetFilePath(m_FileName, pathName);
>>> +    bool usePath = !MET_GetFilePath(m_ElementDataFileName, pathName) 
>>> && +                   MET_GetFilePath(m_FileName, pathName);
>>>      if(usePath)
>>>        {
>>>        sprintf(dataFileName, "%s%s", pathName, m_ElementDataFileName);
>>> @@ -2471,10 +2473,10 @@
>>>        m_Quantity *= (_indexMax[i] - _indexMin[i] + 1);
>>>        }
>>>  
>>> -    bool usePath;
>>>      char pathName[255];
>>>      char fName[255];
>>> -    usePath = MET_GetFilePath(m_FileName, pathName);
>>> +    bool usePath = !MET_GetFilePath(m_ElementDataFileName, pathName) 
>>> && +                   MET_GetFilePath(m_FileName, pathName);
>>>  
>>>      if(!strcmp("Local", m_ElementDataFileName) ||         
>>> !strcmp("LOCAL", m_ElementDataFileName) ||
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
> 
> ------------------------------------------------------------------------
> 
> ObjectType = Image
> NDims = 2
> DimSize = 50 50
> ElementByteOrderMSB = False
> ElementNumberOfChannels = 1
> ElementType = MET_UCHAR
> ElementDataFile = C:\Program Files\Data\MyData.raw


More information about the Insight-users mailing list