/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /* * */ #include "gdcmImageReader.h" #include "gdcmImage.h" #include "gdcmWriter.h" #include "gdcmAttribute.h" #include "gdcmImageWriter.h" #include "gdcmImageChangeTransferSyntax.h" #include #include int main(int argc, char *argv[]) { if( argc < 3 ) { std::cerr << argv[0] << " input.dcm output.dcm" << std::endl; return 1; } const char *filename = argv[1]; const char *outfilename = argv[2]; gdcm::ImageReader reader; reader.SetFileName( filename ); if( !reader.Read() ) { std::cerr << "Could not read: " << filename << std::endl; return 1; } // The output of gdcm::Reader is a gdcm::File //gdcm::File &file = reader.GetFile(); // the dataset is the the set of element we are interested in: //gdcm::DataSet &ds = file.GetDataSet(); gdcm::Image &image = reader.GetImage(); // image.SetSpacing(0, 0.1); // image.SetSpacing(1, 0.2); image.Print( std::cout ); gdcm::ImageChangeTransferSyntax change; change.SetTransferSyntax( gdcm::TransferSyntax::JPEG2000Lossless ); change.SetTransferSyntax( gdcm::TransferSyntax::JPEGLosslessProcess14_1 ); //change.SetTransferSyntax( gdcm::TransferSyntax::JPEGBaselineProcess1 ); //change.SetTransferSyntax( image.GetTransferSyntax() ); change.SetInput( image ); bool b = change.Change(); if( !b ) { std::cerr << "Could not change the Transfer Syntax" << std::endl; return 1; } //std::ofstream out( outfilename, std::ios::binary ); //image.GetBuffer2(out); //out.close(); gdcm::ImageWriter writer; writer.SetImage( change.GetOutput() ); writer.SetFile( reader.GetFile() ); writer.SetFileName( outfilename ); if( !writer.Write() ) { return 1; } return 0; }