- DD(temp->GetScalarTypeAsITKString());
- if (temp->GetScalarTypeAsITKString() != "unsigned_char") {
- DD("Cast");
- vtkImageData * p = vtkImageData::New();
- p->SetExtent(temp->GetFirstVTKImageData()->GetExtent ()); // Only first ! could not be 4D
- p->SetScalarTypeToUnsignedChar();
- p->AllocateScalars ();
- p->CopyAndCastFrom(temp->GetFirstVTKImageData(), temp->GetFirstVTKImageData()->GetExtent ());
- m_Output->AddImage(p);
- vvImageWriter * writer = new vvImageWriter;
- writer->SetOutputFileName("a.mhd");
- writer->SetInput(m_Output);
- writer->Update();
+ // Convert to unsigned char while reading (if not already)
+ typedef itk::ImageFileReader< itk::Image< unsigned char, 3 > > ReaderType;
+ ReaderType::Pointer reader = ReaderType::New();
+ reader->SetFileName(filename.toStdString());
+ reader->Update();
+
+ // Create vv image
+ m_Output = vvImage::New();
+ try {
+ m_Output->AddItkImage( reader->GetOutput() );