1 /*=========================================================================
4 Module: $RCSfile: GdcmToBaseline.cxx,v $
6 Date: $Date: 2005/01/20 16:31:43 $
7 Version: $Revision: 1.2 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
18 #include "vtkGdcmReader.h"
19 #include "vtkImageViewer.h"
20 #include "vtkImageData.h"
21 #include "vtkPNGWriter.h"
22 #include "vtkWindowToImageFilter.h"
24 #include "gdcmFileHelper.h"
29 #include "gdcmDataImages.h"
31 int main(int argc, char *argv[])
35 std::cerr << "Usage: " << argv[0] << " image.dcm image.png\n";
39 std::string filename = argv[1];
40 std::cout << "Filename: " << filename << std::endl;
42 //Extract name to find the png file matching:
43 std::string pngfile = argv[2];
44 std::cerr << "PNG file: " << pngfile << std::endl;
46 // Ok for now still use the original image,
47 vtkGdcmReader *reader = vtkGdcmReader::New();
48 reader->SetFileName( filename.c_str() );
49 //reader->SetFileName( "../Testing/Temporary/TestWrite.dcm" );
52 vtkImageViewer *viewer = vtkImageViewer::New();
53 viewer->SetInput ( reader->GetOutput() );
55 vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
56 viewer->SetColorWindow (range[1] - range[0]);
57 viewer->SetColorLevel (0.5 * (range[1] + range[0]));
60 reader->GetOutput()->GetDimensions( dim );
61 viewer->SetSize(dim[0], dim[1]);
62 viewer->OffScreenRenderingOn();
66 //For multifame dicom, take a snapshot of the center slice (+/- 1)
67 viewer->SetZSlice( dim[2] / 2 );
73 vtkWindowToImageFilter *wif = vtkWindowToImageFilter::New();
74 wif->SetInput(viewer->GetRenderWindow());
77 vtkPNGWriter *writer=vtkPNGWriter::New();
78 writer->SetFileName(argv[2]);
79 writer->SetInput(wif->GetOutput());