]> Creatis software - gdcm.git/blob - vtk/GdcmToBaseline.cxx
Uncomment
[gdcm.git] / vtk / GdcmToBaseline.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: GdcmToBaseline.cxx,v $
5   Language:  C++
6   Date:      $Date: 2005/01/20 16:31:43 $
7   Version:   $Revision: 1.2 $
8                                                                                 
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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*/
18 #include "vtkGdcmReader.h"
19 #include "vtkImageViewer.h"
20 #include "vtkImageData.h"
21 #include "vtkPNGWriter.h"
22 #include "vtkWindowToImageFilter.h"
23
24 #include "gdcmFileHelper.h"
25
26 #include <iostream>
27
28 //Generated file:
29 #include "gdcmDataImages.h"
30
31 int main(int argc, char *argv[])
32 {
33    if( argc < 3 )
34    {
35       std::cerr << "Usage: " << argv[0] << " image.dcm image.png\n";
36       return 0;
37    }
38
39    std::string filename = argv[1];
40    std::cout << "Filename: " << filename << std::endl;
41
42    //Extract name to find the png file matching:
43    std::string pngfile = argv[2];
44    std::cerr << "PNG file: " << pngfile << std::endl;
45  
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" );
50    reader->Update();
51
52    vtkImageViewer *viewer = vtkImageViewer::New();
53    viewer->SetInput ( reader->GetOutput() );
54
55    vtkFloatingPointType *range = reader->GetOutput()->GetScalarRange();
56    viewer->SetColorWindow (range[1] - range[0]);
57    viewer->SetColorLevel (0.5 * (range[1] + range[0]));
58
59    int dim[3];
60    reader->GetOutput()->GetDimensions( dim );
61    viewer->SetSize(dim[0], dim[1]);
62    viewer->OffScreenRenderingOn();
63  
64    if(dim[2] != 1)
65    {
66       //For multifame dicom, take a snapshot of the center slice (+/- 1)
67       viewer->SetZSlice( dim[2] / 2 );
68    }
69
70    viewer->Render();
71
72    // View to image
73    vtkWindowToImageFilter *wif = vtkWindowToImageFilter::New();
74    wif->SetInput(viewer->GetRenderWindow());
75
76    // Write to image
77    vtkPNGWriter *writer=vtkPNGWriter::New();
78    writer->SetFileName(argv[2]);
79    writer->SetInput(wif->GetOutput());
80    writer->Write();
81
82    // Clean up:
83    reader->Delete();
84    viewer->Delete();
85    wif->Delete();
86    writer->Delete();
87
88    return 0;
89 }