1

我需要使用 fo-DICOM 从 DICOM SC 中提取所有图像帧。我有一个测试应用程序可以提取和显示图像,效果很好。但是,我需要将单个图像保存到数据库中,并且遇到了问题。

到目前为止,我有以下代码:

    public void SetImages(DicomFile dicom, ThumbResults results)
    {
        var images = new DicomImage(dicom.Dataset);
        
        for(var count = 0; count < images.NumberOfFrames; count++)
        {
            var image = images.RenderImage(count).As<Bitmap>();
            using(var stream = new MemoryStream())
            {
                image.Save(stream, ImageFormat.Jpeg);
                results.Images.Add(Convert.ToBase64String(stream.ToArray()));
            }
        }
    }

我得到一个 DicomImagingException, "Cannot cast to 'Bitmap'" on images.RenderImage。它在我的测试代码中工作,当我调用时PictureBox.Image = _image.RenderImage(count).As<Bitmap>();,我RenderImage认为必须专门用于渲染(顾名思义)。

我应该如何将单个帧提取到将保存到数据库中的字符串?

4

1 回答 1

2

万一其他人遇到这个问题,问题是原始代码在 .NET Framework 中,但新代码在 .NET Core 中。Core中ImageManager默认不使用WindowsImageManager,需要手动设置。

ImageManager.SetImplementation(WinFormsImageManager.Instance);
于 2021-03-30T15:56:47.293 回答