Skip to main content

@cornerstonejs/dicom-image-loader

初始化和配置

之前:

cornerstoneDICOMImageLoader.external.cornerstone = cornerstone;
cornerstoneDICOMImageLoader.external.dicomParser = dicomParser;
cornerstoneDICOMImageLoader.configure({
useWebWorkers: true,
decodeConfig: {
convertFloatPixelDataToInt: false,
use16BitDataType: preferSizeOverAccuracy || useNorm16Texture,
},
});

// 其他配置...
cornerstoneDICOMImageLoader.webWorkerManager.initialize(config);

之后:

cornerstoneDICOMImageLoader.init();

// 可选地,您可以向 init 传递一个配置对象
cornerstoneDICOMImageLoader.init({
maxWebWorkers: 2, //
});

迁移指南:

  1. 您应该将 configure 替换为 init
  2. 您不再需要传递 cornerstonedicomParser,我们在内部使用它们并作为依赖项导入
  3. 移除 useWebWorkers 选项,因为现在始终使用 web workers
  4. 移除 decodeConfig 选项,因为它们不再适用
  5. 移除单独的 webWorkerManager.initialize 调用,因为它现在在内部处理
  6. 在配置选项中设置 maxWebWorkers,而不是使用单独的配置对象
    1. 默认情况下,我们设置可用核心的一半

移除外部模块

externalModules 文件已被移除。任何依赖于 cornerstone.external 的代码应更新为使用直接导入或新的配置方法。 我们只将 cornerstonejs/coredicomparser 视为其他依赖项,并在内部直接导入它们。

Webpack 配置

如果您的配置中存在以下 Webpack 规则,请将其移除:

{
test: /\.worker\.(mjs|js|ts)$/,
use: [
{
loader: 'worker-loader',
},
],
}

Web workers 现在由库内部处理。

始终 Prescale

默认情况下,Cornerstone3D 始终使用模态 LUT(重新缩放斜率和截距)预缩放图像。您可能不需要对代码库进行任何更改。

Details

为什么? 之前,视口决定是否预缩放,所有视口都遵循这种方法。然而,我们在一些用户实现的自定义图像加载器中发现了预缩放错误。我们现在通过一致地应用预缩放来修复这些问题。

解码器更新

@cornerstonejs/dicomImageLoader 之前使用了旧的 web workers API,现在已弃用。它已通过我们新的内部包装器 comlink 转换为新的 web workers API。这一更改使与 web workers 的交互更加无缝,并促进了将 web workers 编译和打包以匹配库的 ESM 版本。

为什么?

使用新的 ES 模块格式整合 web worker API,这将使像 vite 这样的新打包器能够与库无缝协作。

因此,如果您在 webpack 或其他打包器中有自定义逻辑,您可以移除以下规则:

{
test: /\.worker\.(mjs|js|ts)$/,
use: [
{
loader: 'worker-loader',
},
],
}

移除对非 web worker 解码器的支持

我们在 cornerstone3D 的 2.0 版本中移除了对非 web worker 解码器的支持。这一更改旨在确保库性能更佳并减少打包大小。

为什么?

我们认为没有充分的理由再使用非 worker 解码器。Web worker 解码器提供更优的性能,并且与现代打包器兼容性更好。

移除 imageFrame 上的 minAfterScalemaxAfterScale

取而代之的是 smallestPixelValuelargestPixelValue,之前它们都是一起使用,导致难以使用正确的值。

DICOM 图像加载器 ESM 默认

我们在 cornerstone3D 的 2.0 版本中将 DICOM 图像加载器的默认导出更改为 ESM,并正确发布了类型。

这意味着您不再需要为 DICOM 图像加载器设置别名。

可能在您的 webpack 或其他打包器中,您有以下内容

 alias: {
'@cornerstonejs/dicom-image-loader':
'@cornerstonejs/dicom-image-loader/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js',
},
为什么?

ESM 是 JavaScript 的未来,我们希望确保库与现代打包器和工具兼容。