fo-Dicom - 如何从 DicomFile 中提取图像帧
fo-Dicom - How do I extract image frames from the DicomFile
我需要使用 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()));
}
}
}
我在 images.RenderImage
上收到 DicomImagingException,“无法转换为 'Bitmap'”。它在我的测试代码中有效,当我调用 PictureBox.Image = _image.RenderImage(count).As<Bitmap>();
时,我认为 RenderImage
必须专门用于渲染(顾名思义)。
我应该如何将单个帧提取为将保存到数据库的字符串?
以防其他人遇到此问题,问题是原始代码在 .NET Framework 中,但新代码在 .NET Core 中。 Core中ImageManager默认不使用WindowsImageManager,需要手动设置
ImageManager.SetImplementation(WinFormsImageManager.Instance);
我需要使用 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()));
}
}
}
我在 images.RenderImage
上收到 DicomImagingException,“无法转换为 'Bitmap'”。它在我的测试代码中有效,当我调用 PictureBox.Image = _image.RenderImage(count).As<Bitmap>();
时,我认为 RenderImage
必须专门用于渲染(顾名思义)。
我应该如何将单个帧提取为将保存到数据库的字符串?
以防其他人遇到此问题,问题是原始代码在 .NET Framework 中,但新代码在 .NET Core 中。 Core中ImageManager默认不使用WindowsImageManager,需要手动设置
ImageManager.SetImplementation(WinFormsImageManager.Instance);