0

fo-dicom 4.0.6。

网核5

我根据现有文件创建 dicom 文件。仅在西里尔文中添加少量标签据我了解,当我打开 dicomfile 时,标签 SpecificCharacterSet 用于定义标签的值编码。据我了解,我可以使用自定义 IOManager 更改此行为。

前任 如果我想强制编码 1251 我可以定义类

public class AnsiIOManager : IOManager
{
    /// <inheritdoc />
    protected override Encoding BaseEncodingImpl => Encoding.GetEncoding("windows-1251");

    ...
}

并分配这个IOManager.SetImplementation(new AnsiIOManager());

我对吗?

有时我需要在多线程中同时创建不同编码的文件。我可以动态更改此 IOManager 编码而不是更改静态类型值吗?

4

1 回答 1

0

更改 IOManager 中的默认编码不是正确的方法。因为您向 aa DicomDataset 添加了一些值,因此还需要更新该文件中的 SpecicificCharacterSet。IOManager 仅影响解析值时使用的默认编码。在 5.0.0 版本中,所有这些编码都得到了显着改进。所以我建议使用 fo-dicom 5.0.0。然后您可以执行以下操作:

  • 加载 DicomDataset
  • call dataset.AddOrUpdate(DicomTag.SpeicificCharacterSet, DicomEncoding.GetCharset( Encoding.GetEncoding("windows-1251") )),所以告诉数据集,现在使用你想要的编码
  • 添加带有字符串值的标签
于 2021-11-30T10:26:06.650 回答