UNPKG

paraview-glance

Version:

Web application for Visualizing Scientific and Medical datasets

40 lines (32 loc) 1.35 kB
var Image = require('./Image.js'); var Matrix = require('./Matrix.js'); /** Join an array of sequential image slabs into a single image */ function stackImages(images) { var result = new Image(images[0].imageType); result.origin = Array.from(images[0].origin); result.spacing = Array.from(images[0].spacing); var dimension = result.imageType.dimension; result.direction = new Matrix(dimension, dimension); result.direction.data = Array.from(images[0].direction.data); var stackOn = dimension - 1; result.size = Array.from(images[0].size); var stackedSize = images.reduce(function (accumulator, currentValue) { return accumulator + currentValue.size[stackOn]; }, 0); result.size[stackOn] = stackedSize; var dataSize = result.size.reduce(function (accumulator, currentValue) { return accumulator * currentValue; }, 1) * result.imageType.components; result.data = new images[0].data.constructor(dataSize); var offsetBase = result.imageType.components; for (var subIndex = 0; subIndex < result.size.length - 1; subIndex++) { offsetBase *= result.size[subIndex]; } var stackIndex = 0; for (var index = 0; index < images.length; index++) { result.data.set(images[index].data, offsetBase * stackIndex); stackIndex += images[index].size[stackOn]; } return result; } export default stackImages;