UNPKG

@cornerstonejs/dicom-image-loader

Version:

Cornerstone Image Loader for DICOM WADO-URI and WADO-RS and Local file

36 lines (35 loc) 1.55 kB
import { xhrRequest } from '../internal/index'; import streamRequest from '../internal/streamRequest'; import rangeRequest from '../internal/rangeRequest'; import extractMultipart from './extractMultipart'; import { getImageQualityStatus } from './getImageQualityStatus'; function getPixelData(uri, imageId, mediaType = 'application/octet-stream', options) { const { streamingData, retrieveOptions = {} } = options || {}; const headers = { Accept: mediaType, }; let url = retrieveOptions.urlArguments ? `${uri}${uri.indexOf('?') === -1 ? '?' : '&'}${retrieveOptions.urlArguments}` : uri; if (retrieveOptions.framesPath) { url = url.replace('/frames/', retrieveOptions.framesPath); } if (streamingData?.url !== url) { options.streamingData = { url }; } if (retrieveOptions.rangeIndex !== undefined) { return rangeRequest(url, imageId, headers, options); } if (retrieveOptions.streaming) { return streamRequest(url, imageId, headers, options); } const loadPromise = xhrRequest(url, imageId, headers); const { xhr } = loadPromise; return loadPromise.then(function (imageFrameAsArrayBuffer) { const contentType = xhr.getResponseHeader('Content-Type') || 'application/octet-stream'; const extracted = extractMultipart(contentType, new Uint8Array(imageFrameAsArrayBuffer)); extracted.imageQualityStatus = getImageQualityStatus(retrieveOptions, true); return extracted; }); } export default getPixelData;