using System;
using System.IO;
public class FileChangeTS
{
public static byte[] StrToByteArray(string str)
{
System.Text.ASCIIEncoding encoding=
new System.Text.ASCIIEncoding();
return encoding.GetBytes(str);
}
static private void CreateSmallDICOM(string fileName)
{
{
byte[] buffer = new byte[ 512 * 512 * 2 ];
string mediastorage = "1.2.840.10008.5.1.4.1.1.7.2";
byte[] val = StrToByteArray(mediastorage);
writer.SetFileName( fileName );
writer.Write();
}
}
static private void CreateBigDICOM(string fileName, string outfilename)
{
{
string nframes = "1000";
ano.Replace(
new gdcm.
Tag(0x0028,0x0008), nframes );
ano.SetInputFileName(fileName);
ano.SetOutputFileName(outfilename);
ano.Write();
}
}
static private void CreateDummyFile(string fileName, long length)
{
using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
fileStream.SetLength(length);
}
}
static private void ReadBytesIntoArray( byte[] array, FileStream source )
{
int numBytesToRead = array.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
int n = source.Read(array, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
}
static private void AssembleDICOMAndRaw(string dicomfn, string rawdata, string outfn)
{
{
fs.SetTemplateFileName(dicomfn);
fs.SetOutputFileName(outfn);
fs.CheckDataElement( pixeldata );
fs.StartDataElement( pixeldata );
using (FileStream rawSource = new FileStream(rawdata,
FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[512];
for( int i = 0; i < 512 * 1000; ++i )
{
ReadBytesIntoArray( bytes, rawSource );
fs.AppendToDataElement( pixeldata, bytes, (uint)bytes.Length );
}
}
if( !fs.StopDataElement( pixeldata ) )
{
throw new Exception(
"StopDataElement failed");
}
}
}
static private void CompressIntoJPEG(string rawdicom, string jpegdicom)
{
{
}
}
public static int Main(string[] args)
{
string filename = args[0];
string outfilename = args[1];
string rawfilename = args[2];
string mergefn = args[3];
string jpegfn = args[4];
CreateSmallDICOM(filename);
CreateBigDICOM(filename, outfilename);
CreateDummyFile(rawfilename, 512 * 512 * 1000 );
AssembleDICOMAndRaw(outfilename, rawfilename, mergefn);
CompressIntoJPEG(mergefn, jpegfn);
return 0;
}
}
void SetNumberOfDimensions(unsigned int dim)
void SetDataElement(DataElement const &de)
Definition gdcmBitmap.h:76
void SetDimension(unsigned int idx, unsigned int dim)
void SetPhotometricInterpretation(PhotometricInterpretation const &pi)
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
void SetByteValue(const char *array, VL length)
Definition gdcmDataElement.h:126
Class to represent a Data Set (which contains Data Elements)
Definition gdcmDataSet.h:56
void Insert(const DataElement &de)
Definition gdcmDataSet.h:128
Exception.
Definition gdcmException.h:44
FileAnonymizer.
Definition gdcmFileAnonymizer.h:48
FileChangeTransferSyntax.
Definition gdcmFileChangeTransferSyntax.h:40
bool Change()
Change the transfer syntax.
void SetOutputFileName(const char *filename_native)
Set output filename (target compressed DICOM)
static SmartPointer< FileChangeTransferSyntax > New()
for wrapped language: instantiate a reference counted object
Definition gdcmFileChangeTransferSyntax.h:62
void SetInputFileName(const char *filename_native)
Set input filename (raw DICOM)
void SetTransferSyntax(TransferSyntax const &ts)
Specify the Target Transfer Syntax.
FileStreamer.
Definition gdcmFileStreamer.h:42
a DICOM File
Definition gdcmFile.h:34
const DataSet & GetDataSet() const
Get Data Set.
Definition gdcmFile.h:57
ImageCodec.
Definition gdcmImageCodec.h:31
JPEG codec.
Definition gdcmJPEGCodec.h:41
void SetQuality(double q)
Class to represent an PhotometricInterpretation.
Definition gdcmPhotometricInterpretation.h:29
PIType
Definition gdcmPhotometricInterpretation.h:31
PixmapWriter.
Definition gdcmPixmapWriter.h:37
Pixmap class.
Definition gdcmPixmap.h:33
SimpleSubjectWatcher.
Definition gdcmSimpleSubjectWatcher.h:32
Class to do system operation.
Definition gdcmSystem.h:27
Class to represent a DICOM Data Element (Attribute) Tag (Group, Element).
Definition gdcmTag.h:39
Class to manipulate Transfer Syntax.
Definition gdcmTransferSyntax.h:40
TSType
Definition gdcmTransferSyntax.h:61
Value Length.
Definition gdcmVL.h:30