Program: gdcm
Module: $RCSfile: TestWrite.cxx,v $
Language: C++
- Date: $Date: 2005/01/08 15:03:57 $
- Version: $Revision: 1.13 $
+ Date: $Date: 2005/07/07 17:31:53 $
+ Version: $Revision: 1.21 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
-#include "gdcmHeader.h"
#include "gdcmFile.h"
+#include "gdcmFileHelper.h"
#include <iostream>
-int main(int argc, char* argv[])
+int main(int argc, char *argv[])
{
- std::string zozo;
+ std::string fileNameToWrite;
- gdcm::Header* e1;
- gdcm::File * f1;
+ gdcm::File *f;
+ gdcm::FileHelper *fh;
- //gdcmDocument * d; //not used
- void* imageData;
+ void *imageData;
int dataSize;
if (argc < 3) {
}
/*
if (0) { // Just to keep the code for further use
- std::cout <<std::endl << "-------- Test gdcmHeader ------" <<std::endl;
- e1 = new gdcmHeaderHelper(argv[1]);
- if (!f1->GetHeader()->IsReadable()) {
+ std::cout <<std::endl << "-------- Test gdcmFile ------" <<std::endl;
+ f = new gdcmFileHelper(argv[1]);
+ if (!fh->GetFile()->IsReadable()) {
std::cout << "Sorry, not a DICOM / ACR File" <<std::endl;
exit(0);
}
- std::cout << std::endl << "----------------------> after new gdcmHeader"
+ std::cout << std::endl << "----------------------> after new gdcmFile"
<< std::endl;
- e1->PrintEntry();
+ f->PrintEntry();
std::cout <<std::endl <<"---------------------------------------"
<<std::endl;
}
<< "--------------------- file :" << argv[1]
<< std::endl;
- std::string toto = argv[1];
+ std::string fileName = argv[1];
std::string mode = argv[2];
- e1 = new gdcm::Header( toto.c_str() );
- if (!e1->IsReadable())
+ //f = new gdcm::File( fileName.c_str() );
+
+ // new style :
+ f = new gdcm::File( );
+ f->SetLoadMode(0);
+ f->SetFileName( fileName );
+ bool res = f->Load();
+ if ( !res )
{
std::cerr << "Sorry, not a Readable DICOM / ACR File" <<std::endl;
return 0;
}
- // e1->Print();
+ // f->Print();
- f1 = new gdcm::File(e1);
+ fh = new gdcm::FileHelper(f);
+ dataSize = fh->GetImageDataSize();
+ imageData= fh->GetImageData();
+
+
// ---
- dataSize = f1->GetImageDataSize();
std::cout <<std::endl <<" dataSize " << dataSize << std::endl;
int nX,nY,nZ,sPP,planarConfig;
std::string pixelType, transferSyntaxName;
- nX=e1->GetXSize();
- nY=e1->GetYSize();
- nZ=e1->GetZSize();
+ nX=f->GetXSize();
+ nY=f->GetYSize();
+ nZ=f->GetZSize();
std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
- pixelType = e1->GetPixelType();
- sPP = e1->GetSamplesPerPixel();
- planarConfig = e1->GetPlanarConfiguration();
+ pixelType = f->GetPixelType();
+ sPP = f->GetSamplesPerPixel();
+ planarConfig = f->GetPlanarConfiguration();
std::cout << " pixelType=" << pixelType
<< " SampleserPixel=" << sPP
<< " PlanarConfiguration=" << planarConfig
<< " PhotometricInterpretation="
- << e1->GetEntry(0x0028,0x0004)
+ << f->GetEntryValue(0x0028,0x0004)
<< std::endl;
- int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
+ int numberOfScalarComponents=f->GetNumberOfScalarComponents();
std::cout << "NumberOfScalarComponents " << numberOfScalarComponents <<std::endl;
- transferSyntaxName = e1->GetTransfertSyntaxName();
+ transferSyntaxName = f->GetTransferSyntaxName();
std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
-
-/* if ( transferSyntaxName != "Implicit VR - Little Endian"
+
+/*
+ if ( transferSyntaxName != "Implicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Little Endian"
&& transferSyntaxName != "Deflated Explicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Big Endian"
&& transferSyntaxName != "Uncompressed ACR-NEMA" ) {
std::cout << std::endl << "==========================================="
<< std::endl;
- f1->GetPixelReadConverter()->Print();
+ fh->GetPixelReadConverter()->Print();
std::cout << std::endl << "==========================================="
<< std::endl;
- }*/
- imageData= f1->GetImageData();
-
+ }
+*/
switch (mode[0])
{
case 'a' :
// ecriture d'un fichier ACR
- // à partir d'un dcmHeader correct.
+ // à partir d'un dcmFile correct.
- zozo = toto + ".ACR";
+ fileNameToWrite = fileName + ".ACR";
std::cout << "WriteACR" << std::endl;
- f1->WriteAcr(zozo);
+ fh->WriteAcr(fileNameToWrite);
break;
case 'd' : // Not document in the 'usage', because the method is knowed to be bugged.
// ecriture d'un fichier DICOM Implicit VR
- // à partir d'un dcmHeader correct.
+ // à partir d'un dcmFile correct.
- zozo = toto + ".DCM";
+ fileNameToWrite = fileName + ".DCM";
std::cout << "WriteDCM Implicit VR" << std::endl;
- f1->WriteDcmImplVR(zozo);
+ fh->WriteDcmImplVR(fileNameToWrite);
break;
case 'x' :
// ecriture d'un fichier DICOM Explicit VR
- // à partir d'un dcmHeader correct.
+ // à partir d'un dcmFile correct.
- zozo = toto + ".XDCM";
+ fileNameToWrite = fileName + ".XDCM";
std::cout << "WriteDCM Explicit VR" << std::endl;
- f1->WriteDcmExplVR(zozo);
+ fh->WriteDcmExplVR(fileNameToWrite);
break;
case 'r' :
// Ecriture d'un Raw File, a afficher avec
// affim filein= dimx= dimy= nbit= signe=
- zozo = toto + ".RAW";
+ fileNameToWrite = fileName + ".RAW";
std::cout << "WriteRaw" << std::endl;
- f1->WriteRawData(zozo);
+ fh->WriteRawData(fileNameToWrite);
break;
case 'v' :
- if ( f1->GetHeader()->GetBitsAllocated() == 8)
+ if ( fh->GetFile()->GetBitsAllocated() == 8)
{
std::cout << "videoinv for 8 bits" << std::endl;
for (int i=0; i<dataSize; i++)
{
- ((uint8_t*)imageData)[i] += 127;
+ ((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] += 60000; //32767;
+ ((uint16_t*)imageData)[i] = 65535 - ((uint16_t*)imageData)[i];
}
}
- zozo = toto + ".VDCM";
+ fileNameToWrite = fileName + ".VDCM";
std::cout << "WriteDCM Explicit VR + VideoInv" << std::endl;
- f1->WriteDcmExplVR(zozo);
+ fh->WriteDcmExplVR(fileNameToWrite);
break;
}
- return 0;
+ delete f;
+ delete fh;
+ return 0;
}