DicomDataSet ds = new DicomDataSet();
DicomDataSet metaHeader = new DicomDataSet();
string transferSyntax = TransferSyntaxes.ExplicitVRLittleEndian;
string pixelTransferSyntax = TransferSyntaxes.ExplicitVRLittleEndian;
ds.Add(Keyword.SamplesPerPixel, 1);
ds.Add(Keyword.PhotometricInterpretation, "MONOCHROME2");
ds.Add(Keyword.Rows, 512);
ds.Add(Keyword.Columns, 512);
ds.Add(Keyword.PixelSpacing, new float[] { 0.684f, 0.684f });
ds.Add(Keyword.BitsAllocated, 16);
ds.Add(Keyword.BitsStored, 12);
ds.Add(Keyword.HighBit, 11);
ds.Add(Keyword.PixelRepresentation, 0);
ds.Add(Keyword.WindowCenter, new int[] { 35, 50 });
ds.Add(Keyword.WindowWidth, new int[] { 350, 150 });
ds.Add(Keyword.RescaleIntercept, -1200);
ds.Add(Keyword.RescaleSlope, 1);
ds.SetPixelData(pixelTransferSyntax, getData);
metaHeader.Add(Keyword.MediaStorageSOPClassUID, SOPClasses.CT); // CT Image Storage
metaHeader.Add(Keyword.MediaStorageSOPInstanceUID, DicomGlobal.NewUID());
metaHeader.Add(Keyword.TransferSyntaxUID, transferSyntax);
metaHeader.Add(Keyword.ImplementationClassUID, DicomGlobal.ImplementationUID);
metaHeader.Add(Keyword.ImplementationVersionName, DicomGlobal.ImplementationName);
using (FileStream fs = new FileStream("Output_Dataset.dcm", FileMode.Create, FileAccess.Write))
{
ds.Write(fs, transferSyntax, metaHeader);
}
// Method
private Stream getData(int arg)
{
return new FileStream("pixel.data", FileMode.Open, FileAccess.Read, FileShare.Read);
}