DicomImage

DicomImage class

它是使用来自 DICOM 文件的图像的实现类

public sealed class DicomImage : RasterCachedMultipageImage, IMultipageImageExt

构造函数

姓名描述
DicomImage(Stream)初始化DicomImage类.
DicomImage(Stream, LoadOptions)初始化DicomImage类.
DicomImage(DicomOptions, int, int)初始化DicomImage类.

特性

姓名描述
ActivePage { get; set; }获取或设置活动页面。
ActivePageIndex { get; }获取索引活动页。
AutoAdjustPalette { get; set; }获取或设置是否自动调整调色板的值。
override BackgroundColor { get; set; }获取或设置背景颜色的值。
override BitsPerPixel { get; }获取每像素计数的图像位数。
Bounds { get; }获取图像边界。
BufferSizeHint { get; set; }获取或设置缓冲区大小提示,该提示定义了所有内部缓冲区的最大允许大小。
Container { get; }获取Image容器.
DataStreamContainer { get; }获取对象的数据流。
DicomPages { get; }获取页面。
Disposed { get; }获取一个值,该值指示此实例是否被释放。
override FileFormat { get; }获取文件格式的值
FileInfo { get; }获取一个值,其中包含 DICOM 文件的信息头
override HasAlpha { get; }获取有 alpha 通道。
virtual HasBackgroundColor { get; set; }获取或设置图像是否有背景色的值。
override HasTransparentColor { get; }获取一个表示图像是否具有透明色的值。
override Height { get; }获取图像高度。
virtual HorizontalResolution { get; set; }获取或设置此图像的水平分辨率,以每英寸像素为单位RasterImage .
override ImageOpacity { get; }获取此图像的不透明度。
InterruptMonitor { get; set; }获取或设置中断监视器。
IsCached { get; }获取当前是否缓存图像数据的值。
IsRawDataAvailable { get; }获取一个值,指示是否可以加载原始数据。
override PageCount { get; }获取页数。
override PageExportingAction { get; set; }获取或设置页面导出动作。 请注意,设置此方法执行后会自动释放页面资源。 会在每页保存前执行。
override Pages { get; }获取页面。
Palette { get; set; }获取或设置调色板。直接表示像素时不使用调色板。
virtual PremultiplyComponents { get; set; }获取或设置一个值,该值指示是否必须对图像分量进行预乘。
RawCustomColorConverter { get; set; }获取或设置自定义颜色转换器
virtual RawDataFormat { get; }获取原始数据格式。
RawDataSettings { get; }获取当前的原始数据设置。请注意,使用这些设置时,数据加载时无需转换。
RawFallbackIndex { get; set; }获取或设置调色板索引超出范围时使用的回退索引
RawIndexedColorConverter { get; set; }获取或设置索引颜色转换器
virtual RawLineSize { get; }以字节为单位获取原始行大小。
Size { get; }获取图像大小。
virtual TransparentColor { get; set; }获取图像透明色。
virtual UpdateXmpData { get; set; }获取或设置是否更新 XMP 元数据的值。
override UsePalette { get; }获取指示是否使用图像调色板的值。
virtual UseRawData { get; set; }获取或设置一个值,指示当原始数据加载可用时是否使用原始数据加载。
virtual VerticalResolution { get; set; }获取或设置此对象的垂直分辨率,以每英寸像素为单位RasterImage .
override Width { get; }获取图像宽度。
override XmpData { get; set; }获取或设置 Xmp 数据。

方法

姓名描述
AddPage()将新页面添加到页面列表的末尾。
AddPage(RasterImage)将页面添加到图像。
override AdjustBrightness(int)调整一个brightness对于图像.
override AdjustContrast(float)Image对比
override AdjustGamma(float)图像的 Gamma 校正。
override AdjustGamma(float, float, float)图像的 Gamma 校正。
override BinarizeBradley(double)使用 Bradley 自适应阈值算法对图像进行二值化,使用积分图像阈值
override BinarizeBradley(double, int)使用 Bradley 自适应阈值算法对图像进行二值化,使用积分图像阈值
override BinarizeFixed(byte)具有预定义阈值的图像二值化
override BinarizeOtsu()使用 Otsu 阈值对图像进行二值化
override CacheData()缓存私有数据。
CanSave(ImageOptionsBase)判断图像是否可以保存为传递的保存选项所代表的指定文件格式。
override Crop(Rectangle)裁剪图像。
override Crop(int, int, int, int)使用班次裁剪图像。
Dispose()处理当前实例。
Dither(DitheringMethod, int)对当前图像执行抖动。
override Dither(DitheringMethod, int, IColorPalette)对当前图像执行抖动。
override Filter(Rectangle, FilterOptionsBase)过滤指定的矩形。
GetArgb32Pixel(int, int)获取图像 32 位 ARGB 像素。
GetDefaultArgb32Pixels(Rectangle)获取默认的 32 位 ARGB 像素数组。
virtual GetDefaultOptions(object[])获取默认选项。
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)使用部分像素加载器获取默认像素数组。
GetDefaultRawData(Rectangle, RawDataSettings)获取默认的原始数据数组。
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)使用部分像素加载器获取默认原始数据数组。
virtual GetModifyDate(bool)获取上次修改资源图像的日期和时间。
virtual GetOriginalOptions()获取基于原始文件设置的选项。 这有助于保持原始图像的位深度和其他参数不变。 例如,如果我们加载一个每像素 1 位的黑白 PNG 图像,然后使用 the 保存它Save方法,将产生每像素8位的输出PNG图像。 为了避免它并以每像素1位保存PNG图像,使用此方法获取相应的保存选项并将它们 传递给Save方法作为第二个参数。
GetPixel(int, int)获取图像像素。
GetSkewAngle()获取倾斜角度。 该方法适用于扫描的文本文档,确定扫描时的倾斜角度。
override Grayscale()将图像转换为其灰度表示
InsertPage(int)在指定索引的页面列表中插入一个新页面。
LoadArgb32Pixels(Rectangle)加载 32 位 ARGB 像素。
LoadArgb64Pixels(Rectangle)加载 64 位 ARGB 像素。
LoadCmyk32Pixels(Rectangle)以 CMYK 格式加载像素。
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)部分按包加载 32 位 ARGB 像素。
LoadPartialPixels(Rectangle, IPartialPixelLoader)部分按包加载像素。
LoadPixels(Rectangle)加载像素。
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)加载原始数据。
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)加载原始数据。
NormalizeAngle()角度归一化。 此方法适用于扫描的文本文档,以消除倾斜扫描。 此方法使用GetSkewAngleRotate方法.
override NormalizeAngle(bool, Color)角度归一化。 此方法适用于扫描的文本文档,以消除倾斜扫描。 此方法使用!:GetSkewAngle和Rotate方法.
ReadArgb32ScanLine(int)按指定的扫描线索引读取整个扫描线。
ReadScanLine(int)按指定的扫描线索引读取整个扫描线。
RemovePage(int)删除页面列表指定索引处的页面。
ReplaceColor(Color, byte, Color)用允许的差异将一种颜色替换为另一种颜色,并保留原始 alpha 值以保存平滑边缘。
override ReplaceColor(int, byte, int)用允许的差异将一种颜色替换为另一种颜色,并保留原始 alpha 值以保存平滑边缘。
ReplaceNonTransparentColors(Color)将所有不透明的颜色替换为新颜色并保留原始 alpha 值以保存平滑的边缘。 注意:如果在不透明的图像上使用它,所有颜色都将替换为一个颜色。
override ReplaceNonTransparentColors(int)将所有不透明的颜色替换为新颜色并保留原始 alpha 值以保存平滑的边缘。 注意:如果在不透明的图像上使用它,所有颜色都将替换为一个颜色。
Resize(int, int)调整图像大小。默认NearestNeighbourResample已使用。
override Resize(int, int, ImageResizeSettings)调整图像大小。
override Resize(int, int, ResizeType)调整图像大小。
ResizeHeightProportionally(int)按比例调整高度。默认NearestNeighbourResample已使用。
virtual ResizeHeightProportionally(int, ImageResizeSettings)按比例调整高度。
override ResizeHeightProportionally(int, ResizeType)按比例调整宽度。
ResizeProportional(int, int, ResizeType)对图像执行比例调整大小。 比例调整大小将根据比例调整每一帧的大小newWidth/宽度和newHeight/身高.
ResizeWidthProportionally(int)按比例调整宽度。默认NearestNeighbourResample已使用。
virtual ResizeWidthProportionally(int, ImageResizeSettings)按比例调整宽度。
override ResizeWidthProportionally(int, ResizeType)按比例调整宽度。
virtual Rotate(float)围绕中心旋转图像。
override Rotate(float, bool, Color)!:RasterCahcedMultipageImage.Rotate中心周围的图像。
override RotateFlip(RotateFlipType)仅旋转、翻转或旋转和翻转活动帧。
Save()将图像数据保存到底层流。
Save(Stream)将对象的数据保存到指定的流中。
override Save(string)将图像保存到指定的文件位置。
Save(Stream, ImageOptionsBase)根据保存选项将图像的数据以指定的文件格式保存到指定的流中。
virtual Save(string, bool)将对象的数据保存到指定的文件位置。
virtual Save(string, ImageOptionsBase)根据保存选项将对象的数据以指定的文件格式保存到指定的文件位置。
override Save(Stream, ImageOptionsBase, Rectangle)根据保存选项将图像的数据以指定的文件格式保存到指定的流中。
virtual Save(string, ImageOptionsBase, Rectangle)根据保存选项将对象的数据以指定的文件格式保存到指定的文件位置。
SaveAll(string, ImageOptionsBase)根据保存选项将对象的数据以指定的文件格式保存到指定的文件(索引器+文件名)位置..
SaveArgb32Pixels(Rectangle, int[])保存 32 位 ARGB 像素。
SaveCmyk32Pixels(Rectangle, int[])保存像素。
SavePixels(Rectangle, Color[])保存像素。
SaveRawData(byte[], int, Rectangle, RawDataSettings)保存原始数据。
SetArgb32Pixel(int, int, int)为指定位置设置图像 32 位 ARGB 像素。
override SetPalette(IColorPalette, bool)设置图像调色板。
SetPixel(int, int, Color)为指定位置设置图像像素。
override SetResolution(double, double)为此设置分辨率RasterImage .
virtual ToBitmap()将光栅图像转换为位图。
WriteArgb32ScanLine(int, int[])将整个扫描线写入指定的扫描线索引。
WriteScanLine(int, Color[])将整个扫描线写入指定的扫描线索引。

例子

在 DICOM 压缩中更改颜色类型。

[C#]

using (var inputImage = Image.Load("original.jpg"))
{
    var options = new DicomOptions { ColorType = ColorType.Grayscale8Bit };

    inputImage.Save("original_8Bit.dcm", options);
}

在 DICOM 图像中使用 RLE 压缩。

[C#]

using (var inputImage = Image.Load("original.jpg"))
{
    var options = new DicomOptions
    {
        ColorType = ColorType.Rgb24Bit,
        Compression = new Compression { Type = CompressionType.Rle }
    };

    inputImage.Save("original_RLE.dcm", options);
}

在 DICOM 图像中使用 JPEG 2000 压缩。

[C#]

using (var inputImage = Image.Load("original.jpg"))
{
    var options = new DicomOptions
    {
        ColorType = ColorType.Rgb24Bit,
        Compression = new Compression
        {
            Type = CompressionType.Jpeg2000,
            Jpeg2000 = new Jpeg2000Options
            {
                Codec = Jpeg2000Codec.Jp2,
                Irreversible = false
            }
        }
    };

    inputImage.Save("original_JPEG2000.dcm", options);
}

在 DICOM 图像中使用 JPEG 压缩。

[C#]

using (var inputImage = Image.Load("original.jpg"))
{
    var options = new DicomOptions
    {
        ColorType = ColorType.Rgb24Bit,
        Compression = new Compression
        {
            Type = CompressionType.Jpeg,
            Jpeg = new JpegOptions
            {
                CompressionType = JpegCompressionMode.Baseline,
                SampleRoundingMode = SampleRoundingMode.Truncate,
                Quality = 50
            }
        }
    };

    inputImage.Save("original_JPEG.dcm", options);
}

此示例显示如何从文件流加载 DICOM 图像。

[C#]

string dir = "c:\\temp\\";

// 从文件流中加载 DICOM 图像。
using (System.IO.Stream stream = System.IO.File.OpenRead(dir + "sample.dicom"))
{
    using (Aspose.Imaging.FileFormats.Dicom.DicomImage dicomImage = new Aspose.Imaging.FileFormats.Dicom.DicomImage(stream))
    {
        // 将每个页面保存为单独的 PNG 图像。                    
        foreach (Aspose.Imaging.FileFormats.Dicom.DicomPage dicomPage in dicomImage.DicomPages)
        {
            // 根据页面索引生成文件名。
            string fileName = string.Format("sample.{0}.png", dicomPage.Index);

            // DICOM 页面是光栅图像,因此所有允许的光栅图像操作都适用于 DICOM 页面。
            dicomPage.Save(dir + fileName, new Aspose.Imaging.ImageOptions.PngOptions());
        }
    }
}

创建多页 Dicom 图像。

[C#]

using (DicomImage image = (DicomImage)Image.Create(
        new DicomOptions() { Source = new StreamSource(new MemoryStream()) },
        100,
        100))
{
    // 使用矢量图形绘制一些东西
    Graphics graphics = new Graphics(image);
    graphics.FillRectangle(new SolidBrush(Color.BlueViolet), image.Bounds);
    graphics.FillRectangle(new SolidBrush(Color.Aqua), 10, 20, 50, 20);
    graphics.FillEllipse(new SolidBrush(Color.Orange), 30, 50, 70, 30);

    // 保存绘制图像的像素。它们现在位于 Dicom 图像的第一页。
    int[] pixels = image.LoadArgb32Pixels(image.Bounds);

    // 之后添加几页,使它们变暗
    for (int i = 1; i < 5; i++)
    {
        DicomPage page = image.AddPage();
        page.SaveArgb32Pixels(page.Bounds, pixels);
        page.AdjustBrightness(i * 30);
    }

    // 在主页面前面添加几页,使它们更亮
    for (int i = 1; i < 5; i++)
    {
        DicomPage page = image.InsertPage(0);
        page.SaveArgb32Pixels(page.Bounds, pixels);
        page.AdjustBrightness(-i * 30);
    }

    // 将创建的多页图片保存到输出文件
    image.Save("MultiPage.dcm");
}

也可以看看