Program: gdcm
Module: $RCSfile: ReWrite.cxx,v $
Language: C++
- Date: $Date: 2005/07/07 17:31:53 $
- Version: $Revision: 1.8 $
+ Date: $Date: 2005/10/21 08:39:31 $
+ Version: $Revision: 1.14 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
" \n ReWrite :\n",
" Re write a full gdcm-readable Dicom image ",
" (usefull when the file header is not very straight). ",
- "",
+ " ",
" usage: ReWrite filein=inputFileName fileout=anonymizedFileName ",
" [mode=write mode] [noshadow] [noseq][debug] ",
+ " ",
" mode = a (ACR), x (Explicit VR Dicom), r (RAW : only pixels) ",
+ " 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 ",
// ----- Initialize Arguments Manager ------
gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
- if (am->ArgMgrDefined("usage"))
+ if (argc == 1 || am->ArgMgrDefined("usage"))
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
char *fileName = am->ArgMgrWantString("filein",usage);
if ( fileName == NULL )
{
+ std::cout << "'filein= ...' is mandatory" << std::endl;
delete am;
return 0;
}
char *outputFileName = am->ArgMgrWantString("fileout",usage);
if ( outputFileName == NULL )
{
+ std::cout << "'fileout= ...' is mandatory" << std::endl;
delete am;
return 0;
}
char *mode = am->ArgMgrGetString("mode",(char *)"X");
- int loadMode;
- if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") )
- loadMode = NO_SEQ | NO_SHADOW;
- else if ( am->ArgMgrDefined("noshadow") )
- loadMode = NO_SHADOW;
- else if ( am->ArgMgrDefined("noseq") )
- loadMode = NO_SEQ;
- else
- loadMode = 0;
+ int loadMode = gdcm::LD_ALL;
+ if ( am->ArgMgrDefined("noshadowseq") )
+ loadMode |= gdcm::LD_NOSHADOWSEQ;
+ else
+ {
+ if ( am->ArgMgrDefined("noshadow") )
+ loadMode |= gdcm::LD_NOSHADOW;
+ if ( am->ArgMgrDefined("noseq") )
+ loadMode |= gdcm::LD_NOSEQ;
+ }
bool rgb = ( 0 != am->ArgMgrDefined("RGB") );
<< " SampleserPixel=" << sPP
<< " PlanarConfiguration=" << planarConfig
<< " PhotometricInterpretation="
- << f->GetEntryValue(0x0028,0x0004)
+ << f->GetEntryString(0x0028,0x0004)
<< std::endl;
int numberOfScalarComponents=f->GetNumberOfScalarComponents();
- std::cout << "NumberOfScalarComponents " << numberOfScalarComponents <<std::endl;
+ std::cout << "NumberOfScalarComponents " << numberOfScalarComponents
+ <<std::endl;
transferSyntaxName = f->GetTransferSyntaxName();
- std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
+ std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]"
+ << std::endl;
switch (mode[0])
{
fh->WriteAcr(outputFileName);
break;
- case 'D' : // Not documented in the 'usage', because the method is known to be bugged.
- case 'd' :
- // Writting a DICOM Implicit VR file
- // from a full gdcm readable File
+ case 'D' : // Not documented in the 'usage', because the method
+ case 'd' : // is known to be bugged.
+ // Writting a DICOM Implicit VR file
+ // from a full gdcm readable File
std::cout << "WriteDCM Implicit VR" << std::endl;
fh->WriteDcmImplVR(outputFileName);
// from a full gdcm readable File
std::cout << "WriteDCM Explicit VR" << std::endl;
- fh->WriteDcmExplVR(outputFileName);
+ // fh->WriteDcmExplVR(outputFileName);
+ // Try this one :
+ fh->SetWriteTypeToDcmExplVR();
+ fh->Write(outputFileName);
break;
case 'R' :
std::cout << "WriteRaw" << std::endl;
fh->WriteRawData(outputFileName);
break;
+
+ // Just for fun :
+ // Write a 'Video inverse' version of the file.
+ // *Not* described, on purpose, in the USAGE
+
+ case 'V' :
+ case 'v' :
+
+ if ( fh->GetFile()->GetBitsAllocated() == 8)
+ {
+ std::cout << "videoinv for 8 bits" << std::endl;
+ for (int i=0; i<dataSize; i++)
+ {
+ ((uint8_t*)imageData)[i] = 255 - ((uint8_t*)imageData)[i];
+ }
+ }
+ else
+ {
+ std::cout << "videoinv for 16 bits" << std::endl;
+ for (int i=0; i<dataSize/2; i++)
+ {
+ ((uint16_t*)imageData)[i] = 65535 - ((uint16_t*)imageData)[i];
+ }
+ }
+ std::cout << "WriteDCM Explicit VR + VideoInv" << std::endl;
+ fh->WriteDcmExplVR(outputFileName);
+ break;
}
delete f;