I am making a multiple image UI for medical imaging using conerstone library, But there is a problem with dynamic image ids, I have used array with multiple image but when it load in DOM it's give me "loadAndCacheImage: no image loader for imageId". HERE is my code for multiple image.
$(document).ready(function() {
var currentImageIndex = 0;
// updates the image display
function updateTheImage(imageIndex) {
return cornerstone.loadAndCacheImage(imageIds[imageIndex]).then(function(image) {
currentImageIndex = imageIndex;
var currentValueSpan = document.getElementById("sliceText");
currentValueSpan.textContent = "Image " + (currentImageIndex + 1) + "/" + imageIds.length;
var viewport = cornerstone.getViewport(element);
cornerstone.displayImage(element, image, viewport);
});
}
// image enable the element
var element = $('#dicomImage').get(0);
cornerstone.enable(element);
// set event handlers
// setup handlers before we display the image
$(element).on("CornerstoneImageRendered", onImageRendered);
// load and display the image
var imagePromise = updateTheImage(0);
// add handlers for mouse events once the image is loaded.
imagePromise.then(function() {
viewport = cornerstone.getViewport(element);
$('#bottomright').text("Zoom: " + viewport.scale.toFixed(2) + "x");
$('#bottomleft').text("WW/WC:" + Math.round(viewport.voi.windowWidth) + "/" + Math.round(viewport.voi.windowCenter));
// add event handlers to pan image on mouse move
$('#dicomImage').mousedown(function (e) {
var lastX = e.pageX;
var lastY = e.pageY;
var mouseButton = e.which;
$(document).mousemove(function (e) {
var deltaX = e.pageX - lastX,
deltaY = e.pageY - lastY;
lastX = e.pageX;
lastY = e.pageY;
if (mouseButton == 1) {
var viewport = cornerstone.getViewport(element);
viewport.voi.windowWidth += (deltaX / viewport.scale);
viewport.voi.windowCenter += (deltaY / viewport.scale);
cornerstone.setViewport(element, viewport);
$('#bottomleft').text("WW/WL:" + Math.round(viewport.voi.windowWidth) + "/" + Math.round(viewport.voi.windowCenter));
}
else if (mouseButton == 2) {
var viewport = cornerstone.getViewport(element);
viewport.translation.x += (deltaX / viewport.scale);
viewport.translation.y += (deltaY / viewport.scale);
cornerstone.setViewport(element, viewport);
}
else if (mouseButton == 3) {
var viewport = cornerstone.getViewport(element);
viewport.scale += (deltaY / 100);
cornerstone.setViewport(element, viewport);
$('#bottomright').text("Zoom: " + viewport.scale.toFixed(2) + "x");
}
});
$(document).mouseup(function (e) {
$(document).unbind('mousemove');
$(document).unbind('mouseup');
});
});
$('#dicomImage').on('mousewheel DOMMouseScroll', function (e) {
// Firefox e.originalEvent.detail > 0 scroll back, < 0 scroll forward
// chrome/safari e.originalEvent.wheelDelta < 0 scroll back, > 0 scroll forward
if (e.originalEvent.wheelDelta < 0 || e.originalEvent.detail > 0) {
if (currentImageIndex == 0) {
updateTheImage(1);
}
} else {
if (currentImageIndex == 1) {
updateTheImage(0);
}
}
//prevent page fom scrolling
return false;
});
});
});
<div id="dicomImageWrapper" style="width:512px;height:512px;position:relative;color: white;"
class="cornerstone-enabled-image"
oncontextmenu="return false"
unselectable='on'
onselectstart='return false;'
onmousedown='return false;'>
<div id="dicomImage" oncontextmenu="return false" style="width:512px;height:512px;top:0px;left:0px; position:absolute">
</div>
<div id="topleft" style="position: absolute;top:0px; left:0px">
Patient Name
</div>
<div id="topright" style="position: absolute;top:0px; right:0px">
Render Time:
</div>
<!-- <div id="bottomleft" style="position: absolute;bottom:0px; left:0px">
WW/WC:
</div> -->
<div id="sliceText" style="position: absolute;bottom:0px; left:0px">
Image:
</div>
</div>
<script type="text/javascript" src="bower_components/cornerstone/dist/cornerstone.js"></script>
<script type="text/javascript" src="bower_components/image-jpeg2000/dist/jpx.js"></script>
<script type="text/javascript" src="bower_components/cornerstoneMath/dist/cornerstoneMath.js"></script>
<script type="text/javascript" src="src/medical-files/cornerstoneTools.js"></script>
<script type="text/javascript" src="bower_components/dicomParser/dist/dicomParser.js"></script>
<script type="text/javascript" src="bower_components/cornerstoneWADOImageLoader/dist/cornerstoneWADOImageLoader.js"></script>