@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, //
});
迁移指南:
- 您应该将
configure
替换为init
- 您不再需要传递
cornerstone
和dicomParser
,我们在内部使用它们并作为依赖项导入 - 移除
useWebWorkers
选项,因为现在始终使用 web workers - 移除
decodeConfig
选项,因为它们不再适用 - 移除单独的
webWorkerManager.initialize
调用,因为它现在在内部处理 - 在配置选项中设置
maxWebWorkers
,而不是使用单独的配置对象- 默认情况下,我们设置可用核心的一半
移除外部模块
externalModules
文件已被移除。任何依赖于 cornerstone.external
的代码应更新为使用直接导入或新的配置方法。
我们只将 cornerstonejs/core
和 dicomparser
视为其他依赖项,并在内部直接导入它们。
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 解码器提供更优的性能,并且与现代打包器兼容性更好。