
//
//	Bug Report: Attempt to write A 3D Analyze Image
//	
//	Fails with error: AnalyzeImageIO(03193830): More than one component per pixel not supported"
//


#include "itkImageSeriesReader.h"
#include "itkImageSeriesWriter.h"
#include "itkOrientImageFilter.h"
#include "itkRGBPixel.h"

int main1(int argc, char *argv[])
{
	
	const	unsigned int Dimension = 3;	
	typedef itk::RGBPixel<unsigned char>						RGBPixelType;
	typedef itk::Image< RGBPixelType, Dimension >				RGBImageType;
	typedef itk::ImageSeriesReader< RGBImageType >				SeriesReaderType;
	typedef itk::ImageFileWriter< RGBImageType >				RGBWriterType;
	typedef itk::OrientImageFilter <RGBImageType, RGBImageType>	OrientImageFilterType;
		
	SeriesReaderType		::Pointer	reader	 =	SeriesReaderType::New();
	RGBWriterType			::Pointer	writer	 =	RGBWriterType::New();
	OrientImageFilterType	::Pointer	orienter =	OrientImageFilterType::New();

	
	//Add image series reader
	reader->AddFileName("rgb_image_1.png");
	reader->AddFileName("rgb_image_2.png");
	reader->AddFileName("rgb_image_3.png");
	reader->AddFileName("rgb_image_4.png");
	

	//Set Analyze Orientation
	orienter->ReleaseDataFlagOn();
	orienter->SetInput( reader->GetOutput() );
	orienter->SetUseImageDirection(true);
	orienter->SetDesiredCoordinateOrientation( itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RPI );

	
	// Attempt to Write RGB Image
	try {
		writer->SetInput	( reader->GetOutput() );
		writer->SetFileName	( "output.hdr" );
		writer->SetInput	( orienter->GetOutput() );
		writer->Update		();
	}
	catch( itk::ExceptionObject & err ) {
		std::cout << err.GetDescription() << std::endl;
		return EXIT_FAILURE;
	}


	return 0;
}


