Program: gdcm
Module: $RCSfile: ReWrite.cxx,v $
Language: C++
- Date: $Date: 2007/03/29 10:50:14 $
- Version: $Revision: 1.24 $
+ Date: $Date: 2007/08/21 13:17:51 $
+ Version: $Revision: 1.29 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
" (usefull when the file header is not very straight). ",
" ",
" usage: ReWrite filein=inputFileName fileout=outputFileName ",
- " [mode=write mode] [noshadow] [noseq][debug] ",
+ " [mode=write mode] [monochrome1] [noshadow] [noseq][debug] ",
" --> The following line to 'rubout' a burnt-in Patient name ",
" [rubout=xBegin,xEnd,yBegin,yEnd [ruboutvalue=n (<255)] ] ",
- " --> The 2 following lines, to extract a sub image withon some frames ",
+ " --> The 2 following lines, to extract a sub image within some frames ",
" [ROI=xBegin,xEnd,yBegin,yEnd] ",
" [firstframe=beg] [lastframe=end] ",
" ",
" mode = a (ACR), x (Explicit VR Dicom), r (RAW : only pixels) ",
+ " monochrome1 = user wants MONOCHROME1 photom. interp. (0=white) ",
" noshadowseq: user doesn't want to load Private Sequences ",
" noshadow : user doesn't want to load Private groups (odd number)",
" noseq : user doesn't want to load Sequences ",
- " rgb : user wants to tranform LUT (if any) to RGB pixels ",
- " warning : developper wants to run the program in 'warning mode'",
+ " rgb : user wants to transform LUT (if any) to RGB pixels ",
+ " warning : developper wants to run the program in 'warning mode'",
" debug : developper wants to run the program in 'debug mode' ",
FINISH_USAGE
// ----- Initialize Arguments Manager ------
- gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
+ GDCM_NAME_SPACE::ArgMgr *am = new GDCM_NAME_SPACE::ArgMgr(argc, argv);
if (argc == 1 || am->ArgMgrDefined("usage"))
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
- return 0;
+ return 1;
}
char *fileName = am->ArgMgrWantString("filein",usage);
if ( fileName == NULL )
{
std::cout << "'filein= ...' is mandatory" << std::endl;
delete am;
- return 0;
+ return 1;
}
char *outputFileName = am->ArgMgrWantString("fileout",usage);
{
std::cout << "'fileout= ...' is mandatory" << std::endl;
delete am;
- return 0;
+ return 1;
}
const char *mode = am->ArgMgrGetString("mode","X");
- int loadMode = gdcm::LD_ALL;
+ int loadMode = GDCM_NAME_SPACE::LD_ALL;
if ( am->ArgMgrDefined("noshadowseq") )
- loadMode |= gdcm::LD_NOSHADOWSEQ;
+ loadMode |= GDCM_NAME_SPACE::LD_NOSHADOWSEQ;
else
{
if ( am->ArgMgrDefined("noshadow") )
- loadMode |= gdcm::LD_NOSHADOW;
+ loadMode |= GDCM_NAME_SPACE::LD_NOSHADOW;
if ( am->ArgMgrDefined("noseq") )
- loadMode |= gdcm::LD_NOSEQ;
+ loadMode |= GDCM_NAME_SPACE::LD_NOSEQ;
}
bool rgb = ( 0 != am->ArgMgrDefined("RGB") );
+ bool monochrome1 = ( 0 != am->ArgMgrDefined("monochrome1") );
+
if (am->ArgMgrDefined("debug"))
- gdcm::Debug::DebugOn();
+ GDCM_NAME_SPACE::Debug::DebugOn();
if (am->ArgMgrDefined("warning"))
- gdcm::Debug::WarningOn();
+ GDCM_NAME_SPACE::Debug::WarningOn();
bool fail = false;
int *boundVal;
// ----------- End Arguments Manager ---------
- gdcm::File *f = gdcm::File::New();
+ GDCM_NAME_SPACE::File *f = GDCM_NAME_SPACE::File::New();
f->SetLoadMode( loadMode );
+
f->SetFileName( fileName );
bool res = f->Load();
- if ( !res )
+ if ( !res )
{
f->Delete();
- return 0;
+ return 1;
}
if (!f->IsReadable())
{
std::cerr << "Sorry, not a Readable DICOM / ACR File" <<std::endl;
f->Delete();
- return 0;
+ return 1;
}
-
- gdcm::FileHelper *fh = gdcm::FileHelper::New(f);
+ GDCM_NAME_SPACE::FileHelper *fh = GDCM_NAME_SPACE::FileHelper::New(f);
void *imageData;
int dataSize;
transferSyntaxName = f->GetTransferSyntaxName();
std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]"
<< std::endl;
-
+
+ if(monochrome1)
+ fh->SetPhotometricInterpretationToMonochrome1();
if (rgb)
{
// Since we just ReWrite the image, we know no modification
// was performed on the pixels.
// We don't want this image appears as a 'Secondary Captured image'
- fh->SetContentType(gdcm::UNMODIFIED_PIXELS_IMAGE);
+ fh->SetContentType(GDCM_NAME_SPACE::UNMODIFIED_PIXELS_IMAGE);
/// \todo : think about rubbing out a part of a *multiframe* image!
fh->WriteRawData(outputFileName);
break;
+ // UNDOCUMENT on purpose, because it's still bugged :-(
+ case 'J' :
+ case 'j' :
+ // writting a DICOM Jpeg Lossless
+ // from a full gdcm readable File
+ std::cout << "WriteDCM Jpeg Lossless" << std::endl;
+ //fh->SetWriteTypeToDcmExplVR();
+ fh->SetWriteTypeToJPEG();
+ fh->Write(outputFileName);
+ break;
+
// Just for fun :
// Write a 'Video inverse' version of the file.
// *Not* described, on purpose, in the USAGE