Skip to content

Instantly share code, notes, and snippets.

@haehn
Last active April 15, 2022 01:09
Show Gist options
  • Save haehn/a5e8a92c610fa2ad5b0cc227c16b39f8 to your computer and use it in GitHub Desktop.
Save haehn/a5e8a92c610fa2ad5b0cc227c16b39f8 to your computer and use it in GitHub Desktop.
Cornerstone.js DICOM Stack+Brush
<html>
<head>
<script src="https://unpkg.com/cornerstone-core/dist/cornerstone.min.js
"></script>
<script src="https://unpkg.com/cornerstone-wado-image-loader"></script>
<script src="https://unpkg.com/dicom-parser"></script>
<script src="https://unpkg.com/cornerstone-math"></script>
<script src="https://unpkg.com/cornerstone-tools"></script>
<script src="https://unpkg.com/hammerjs"></script>
<script>
cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
cornerstoneWADOImageLoader.external.dicomParser = dicomParser;
cornerstoneTools.external.Hammer = Hammer;
cornerstoneTools.external.cornerstone = cornerstone;
cornerstoneTools.external.cornerstoneMath = cornerstoneMath;
function onDragOver(e) {
// stop browser processing right away
e.stopPropagation();
e.preventDefault();
};
function onDrop(e) {
// stop browser processing right away
e.stopPropagation();
e.preventDefault();
imageIds = [];
for(var i=0; i<e.dataTransfer.files.length; i++) {
var f = e.dataTransfer.files[i];
imageIds.push( cornerstoneWADOImageLoader.wadouri.fileManager.add(f) );
}
cornerstone.loadImage(imageIds[0]).then(function(image) {
console.log('Loaded', image);
cornerstoneTools.init();
var viewer = document.getElementById('viewer');
cornerstone.enable(viewer);
cornerstone.displayImage(viewer, image);
// this depends on the data, i am testing with a single file
var stack = { currentImageIdIndex: 0, imageIds: imageIds };
cornerstoneTools.addStackStateManager(viewer, ["stack"]);
cornerstoneTools.addToolState(viewer, "stack", stack);
cornerstoneTools.addTool(cornerstoneTools.StackScrollMouseWheelTool)
cornerstoneTools.addTool(cornerstoneTools.BrushTool);
cornerstoneTools.setToolActive('Brush', { mouseButtonMask: 1});
cornerstoneTools.setToolActive('StackScrollMouseWheel', {});
});
};
window.onload = function() {
document.body.addEventListener('dragover', onDragOver);
document.body.addEventListener('drop', onDrop);
};
window.onkeyup = function(e) {
if (e.key == '-') {
cornerstoneTools.store.state.tools[1].decreaseBrushSize();
} else if (e.key == '=') {
cornerstoneTools.store.state.tools[1].increaseBrushSize();
} else if (e.key == '1') {
cornerstoneTools.getModule('segmentation').setters.incrementActiveSegmentIndex(viewer);
} else if (e.key == '2') {
cornerstoneTools.getModule('segmentation').setters.decrementActiveSegmentIndex(viewer);
}
};
</script>
</head>
<body style='margin:0px;padding:0px;background:black;'>
<div id='viewer' style='width:100%;height:100%;'></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment