From 01b63dceb3f2fa8cac3114959a220daf5b67b440 Mon Sep 17 00:00:00 2001 From: Ouwen Huang Date: Sat, 4 Feb 2023 05:24:53 +0000 Subject: [PATCH] fix: scaling view --- src/imageLoader/createImage.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/imageLoader/createImage.js b/src/imageLoader/createImage.js index decfe61d..179baae9 100644 --- a/src/imageLoader/createImage.js +++ b/src/imageLoader/createImage.js @@ -54,11 +54,17 @@ function convertToIntPixelData(floatPixelData) { * can transfer array buffers but not typed arrays * @param imageFrame */ -function setPixelDataType(imageFrame) { +function setPixelDataType(imageFrame, preScale) { + const isScaled = preScale?.scaled; + const scalingParmeters = preScale?.scalingParameters; + const rescaleSlope = scalingParmeters?.rescaleSlope; + const rescaleIntercept = scalingParmeters?.rescaleIntercept; + const isNegative = rescaleSlope < 0 || rescaleIntercept < 0; + if (imageFrame.bitsAllocated === 32) { imageFrame.pixelData = new Float32Array(imageFrame.pixelData); } else if (imageFrame.bitsAllocated === 16) { - if (imageFrame.pixelRepresentation === 0) { + if (imageFrame.pixelRepresentation === 0 && !(isScaled && isNegative)) { imageFrame.pixelData = new Uint16Array(imageFrame.pixelData); } else { imageFrame.pixelData = new Int16Array(imageFrame.pixelData); @@ -219,7 +225,7 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) { } if (!alreadyTyped) { - setPixelDataType(imageFrame); + setPixelDataType(imageFrame, imageFrame.preScale); } const imagePlaneModule =