public DicomImageInformation GetImageInformation(
DicomElement element,
int index
)
public:
DicomImageInformation^ GetImageInformation(
DicomElement^ element,
int index
)
element
An item in the Data Set.
index
The zero-based index of the frame whose information is required.
The information about the specified image.
Most DICOM files will only have one Data Element of type DicomTag.PixelData. Therefore, in most instances you can set the element to null, since the method will automatically retrieve information about the image at the specified index within the only Pixel Data Element in the file. If the element is not null, it must point to the Pixel Data Element itself. If the DICOM file is DicomClassType.BasicDirectory , the file may contain more than one Pixel Data Element. In this case you must specify in the element parameter the Pixel Data Element from which to get the image information.
using Leadtools;
using Leadtools.Dicom;
public void TestDicomImage()
{
string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "image3.dcm");
//Make sure to initialize the DICOM engine, this needs to be done only once
//In the whole application
DicomEngine.Startup();
using (DicomDataSet ds = new DicomDataSet())
{
//Load DICOM File
ds.Load(dicomFileName, DicomDataSetLoadFlags.None);
DicomElement pixelDataElement = ds.FindFirstElement(null, DicomTag.PixelData, true);
if (pixelDataElement == null)
{
Console.WriteLine("This dataset is missing the pixel data element", "Sample");
return;
}
if (ds.GetImageCount(pixelDataElement) == 0)
{
Console.WriteLine("Sample: This dataset has no images");
return;
}
DicomImageInformation imageInformation = ds.GetImageInformation(pixelDataElement, 0);
if (imageInformation == null)
{
Console.WriteLine("Sample: Can't retrieve image information");
return;
}
// Over here we can access the different properties of the DicomImageInformation class to get some
// of the image attributes such as bits allocated (DicomImageInformation. BitsAllocated)
RasterImage image = ds.GetImage(pixelDataElement,
0,
0,
RasterByteOrder.Gray,
DicomGetImageFlags.AllowRangeExpansion | DicomGetImageFlags.AutoApplyModalityLut | DicomGetImageFlags.AutoApplyVoiLut);
if (image == null)
{
Console.WriteLine("Sample: Can't retrieve image");
return;
}
//If the image has more than one frame then we can call DicomDataSet.GetImages to get all the frames
using (DicomDataSet ds1 = new DicomDataSet())
{
ds1.Initialize(DicomClassType.DXImageStoragePresentation, DicomDataSetInitializeType.ExplicitVRLittleEndian);
DicomElement pixelDataElement1 = ds1.FindFirstElement(null, DicomTag.PixelData, true);
if (pixelDataElement1 != null)
{
ds1.SetImage(pixelDataElement1,
image,
DicomImageCompressionType.None,
DicomImagePhotometricInterpretationType.Monochrome2,
16,
2,
DicomSetImageFlags.AutoSetVoiLut);
//If we have more than one frame then we can call DicomDataSet.SetImages
//This is an alternative way to set the image, I will first delete the
//existing image and then call DicomDataSet.InsertImage
ds1.DeleteElement(pixelDataElement1);
pixelDataElement1 = ds1.InsertElement(null, false, DicomTag.PixelData, DicomVRType.UN, false, 0);
ds1.InsertImage(pixelDataElement1,
image,
0,
DicomImageCompressionType.None,
DicomImagePhotometricInterpretationType.Monochrome2,
16,
2,
DicomSetImageFlags.AutoSetVoiLut);
//If we have more than one frame then we can call DicomDataSet.InsertImages
ds1.Save(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "Test.dcm"), DicomDataSetSaveFlags.None);
}
}
//Load DICOM File
ds.Load(dicomFileName, DicomDataSetLoadFlags.None);
}
DicomEngine.Shutdown();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
GetImage(DicomElement,Int32,Int32,RasterByteOrder,DicomGetImageFlags) Method
GetImages(DicomElement,Int32,Int32,Int32,RasterByteOrder,DicomGetImageFlags) Method
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document