ITK  4.8.0
Insight Segmentation and Registration Toolkit
SphinxExamples/src/IO/ImageBase/ReadUnknownImageType/Code.cxx
#include "itkImageIOBase.h"
template< class TImage >
int ReadImage( const char* fileName,
typename TImage::Pointer image )
{
typedef TImage ImageType;
typedef itk::ImageFileReader< ImageType > ImageReaderType;
typename ImageReaderType::Pointer reader = ImageReaderType::New();
reader->SetFileName( fileName );
try
{
reader->Update();
}
{
std::cerr << e.what() << std::endl;
return EXIT_FAILURE;
}
image->Graft( reader->GetOutput() );
return EXIT_SUCCESS;
}
template< unsigned int VDimension >
int ReadScalarImage( const char* inputFileName,
const itk::ImageIOBase::IOComponentType componentType )
{
switch( componentType )
{
default:
std::cerr << "Unknown and unsupported component type!" << std::endl;
return EXIT_FAILURE;
{
typedef unsigned char PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef char PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef unsigned short PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef short PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef unsigned int PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef int PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef unsigned long PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef long PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef float PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
{
typedef double PixelType;
typename ImageType::Pointer image = ImageType::New();
if( ReadImage< ImageType >( inputFileName, image ) == EXIT_FAILURE )
{
return EXIT_FAILURE;
}
std::cout << image << std::endl;
break;
}
}
return EXIT_SUCCESS;
}
int main( int argc, char* argv[] )
{
if( argc != 2 )
{
std::cerr << "Usage: "<< std::endl;
std::cerr << argv[0];
std::cerr << " <InputFileName>";
std::cerr << std::endl;
return EXIT_FAILURE;
}
const char * inputFileName = argv[1];
inputFileName,
imageIO->SetFileName( inputFileName );
imageIO->ReadImageInformation();
typedef itk::ImageIOBase::IOPixelType IOPixelType;
const IOPixelType pixelType = imageIO->GetPixelType();
std::cout << "Pixel Type is "
<< std::endl;
typedef itk::ImageIOBase::IOComponentType IOComponentType;
const IOComponentType componentType = imageIO->GetComponentType();
std::cout << "Component Type is "
<< imageIO->GetComponentTypeAsString( componentType )
<< std::endl;
const unsigned int imageDimension = imageIO->GetNumberOfDimensions();
std::cout << "Image Dimension is " << imageDimension << std::endl;
switch( pixelType )
{
{
if( imageDimension == 2 )
{
return ReadScalarImage< 2 >( inputFileName, componentType );
}
else if( imageDimension == 3 )
{
return ReadScalarImage< 3 >( inputFileName, componentType );
}
else if( imageDimension == 4 )
{
return ReadScalarImage< 4 >( inputFileName, componentType );
}
}
default:
std::cerr << "not implemented yet!" << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}