Cornerstone Tools не загружает встроенные инструменты

Не уверен, что происходит, но изображение загружается правильно, но инструмент не отображается. Я не загружаю инструмент до тех пор, пока изображение не окажется в Dom (для этого и предназначена нижняя часть). все модули в console.log выводятся на консоль нормально. любая помощь будет оценена по достоинству. Fyi rich, теперь я работаю с сервером vs code live,

html файл

          <!DOCTYPE html>
<html>
  <head>
    <script src="./wado/dicomParser.min.js"></script>
    <script src="./wado/cornerstoneWADOImageLoader.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8"></script>
    <script src="https://cdn.jsdelivr.net/npm/cornerstone-math@0.1.6"></script>

    <script src="./wado/cornerstone.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/cornerstone-web-image-loader@2.1.0"></script>

    <script src="https://cdn.jsdelivr.net/npm/cornerstone-tools@3.0.0-b.641/dist/cornerstoneTools.js"></script>
  </head>
  <body>
    <input type="file" id="fileInput" multiple />

    <div style="width: 512px; height: 512px" id="image"></div>
    <button id="addTools">Add Tool</button>

    <script src="main.js"></script>
  </body>
</html>

Javascript

          cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
cornerstoneTools.external.cornerstone = cornerstone;
cornerstoneTools.external.Hammer = Hammer;
cornerstoneTools.external.cornerstoneMath = cornerstoneMath;

cornerstone.registerImageLoader("wadouri", loadAndViewImage);

const csTools = cornerstoneTools.init();
const LengthTool = cornerstoneTools.LengthTool;

console.log("cornerstone", cornerstone);
console.log("loader", cornerstoneWADOImageLoader);
console.log("tools", cornerstoneTools);
console.log("cstools", csTools);
console.log("math", cornerstoneMath);
console.log("hammer", Hammer);

const imageHolder = document.getElementById("image");
cornerstone.enable(imageHolder);

const toolButton = document.getElementById("addTools");

toolButton.addEventListener("click", (e) => {
  loadTool();
});

fileInput.addEventListener("change", (e) => {
  const file = fileInput.files;
  const ima = file[0];

  const imageId = cornerstoneWADOImageLoader.wadouri.fileManager.add(ima);

  loadAndViewImage(imageId);
});

function loadAndViewImage(imageId) {
  cornerstone
    .loadImage(imageId)
    .then((image) => {
      const viewport = {
        invert: false,
        pixelReplication: false,
        // voi: {
        //   windowWidth: 256,
        //   windowCenter: 256,
        // },
        scale: 1.5,
        translation: {
          x: 0,
          y: 0,
        },
      };
      cornerstone.displayImage(imageHolder, image, viewport);
      console.log(image);
      console.log(image.data.uint16("x00280010"));
      console.log(image.data.uint32("x00020000"));
    })
    .catch((e) => console.log(e));
}

function loadTool() {
  csTools.addTool(LengthTool);
  csTools.setToolActive(LengthTool.name, {
    mouseButtonMask: 1,
  });
  console.log(csTools.store.state);
}

1 ответ

Отвечая на свой вопрос здесь, я переключился на импорт и переделал часть кода. следующее, похоже, пока работает нормально.

          import Hammer from "hammerjs";
import dicomParser from "dicom-parser";
import * as cornerstone from "cornerstone-core";
import * as cornerstoneMath from "cornerstone-math";
import * as cornerstoneWADOImageLoader from "cornerstone-wado-image-loader";
// import * as cornerstoneWebImageLoader from "cornerstone-web-image-loader";

import * as cornerstoneTools from "cornerstone-tools";

_initCornerstone();

cornerstone.registerImageLoader("wadouri", loadAndViewImage);

const imageHolder = document.getElementById("image");

const toolButton = document.getElementById("addTools");
const windowing = document.getElementById("changeWindow");
const fileInput = document.getElementById("fileInput");
const newWidth = document.getElementById("width");
const newCenter = document.getElementById("center");

fileInput.addEventListener("change", (e) => {
  const file = fileInput.files;
  const ima = file[0];

  const imageId = cornerstoneWADOImageLoader.wadouri.fileManager.add(ima);
  loadAndViewImage(imageId);
});

toolButton.addEventListener("click", () => {
  _initTool();
});

console.log(cornerstone);

cornerstoneTools.init({
  showSVGCursors: true,
});

cornerstone.enable(imageHolder);

function _initTool() {
  const EllipticalRoiTool = cornerstoneTools.EllipticalRoiTool;
  // let imageId;

  cornerstoneTools.addTool(EllipticalRoiTool);
  cornerstoneTools.setToolActive("EllipticalRoi", { mouseButtonMask: 1 });
}

windowing.addEventListener("click", (e) => {
  let viewport = cornerstone.getViewport(imageHolder);
  viewport.voi.windowWidth = parseFloat(newWidth.value);
  viewport.voi.windowCenter = parseFloat(newCenter.value);
  cornerstone.setViewport(imageHolder, viewport);
});

function loadAndViewImage(imageId) {
  cornerstone
    .loadImage(imageId)
    .then((image) => {
      image.windowWidth = 3000;
      image.windowCenter = 1500;

      cornerstone.displayImage(imageHolder, image);
      console.log(image);
    })
    .catch((e) => console.log(e));
}

function _initCornerstone() {
  // Externals
  cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
  cornerstoneWADOImageLoader.external.dicomParser = dicomParser;
  cornerstoneTools.external.cornerstoneMath = cornerstoneMath;
  cornerstoneTools.external.cornerstone = cornerstone;
  cornerstoneTools.external.Hammer = Hammer;
  localStorage.setItem("debug", "cornerstoneTools");
  // Image Loader
  const config = {
    maxWebWorkers: navigator.hardwareConcurrency || 1,
    startWebWorkersOnDemand: true,
    taskConfiguration: {
      decodeTask: {
        initializeCodecsOnStartup: false,
        usePDFJS: false,
      },
    },
  };
  cornerstoneWADOImageLoader.webWorkerManager.initialize(config);
}
Другие вопросы по тегам