如何解决从资源加载时无法访问 DICOM 图像流
我正在使用 fo-Dicom 访问图像流。我有单元测试调用一种方法来加载测试 DICOM 文件。为了自动化构建管道中的过程,我从使用图像路径切换到加载资源。我现在像这样加载我的测试 DICOM 文件:
public static DicomFile RequestDicomFile(Resource resource)
{
//return DicomFile.Open(Reference.GetPath(resource));
DicomFile result = null;
var assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream($"CommonTesting.Resources.{resource.ToString()}.dcm"))
{
result = DicomFile.Open(stream);
}
return result;
}
这将返回一个 DicomFile,我可以访问相关的标签。但是,当我使用下面的(缩写)代码加载图像时,我在 RenderImage 行收到一个异常,提示“无法从流中读取 - 可能已关闭”。
DicomImage images; = new DicomImage(dicom.Dataset);
if (images.NumberOfFrames > 0)
{
var imageData = images.RenderImage(0).As<Bitmap>();
...
}
当我从文件路径(RequestDicomFile 中注释掉的代码)打开 DicomFile 时,我能够访问渲染的图像。
有谁知道为什么资源文件会发生这种情况?或者,是否有更好的方法来引用我的测试文件而不尝试将它们复制到 Azure 管道中的正确路径?
解决方法
解决方案是在打开 DICOM 文件时完全读取流。
result = DicomFile.Open(stream,FileReadOption.ReadAll);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。