UNPKG

@itk-wasm/image-io

Version:

Input and output for scientific and medical image file formats.

57 lines 2.34 kB
import { castImage, copyImage, getFileExtension, } from 'itk-wasm'; import mimeToImageIo from './mime-to-image-io.js'; import extensionToImageIo from './extension-to-image-io.js'; import imageIoIndex from './image-io-index.js'; /** * Write an itk-wasm Image converted to an serialized image file format * * @param {Image} image - Input image * @param {string} serializedImage - Output image serialized in the file format. * @param {WriteImageOptions} options - options object * * @returns {Promise<WriteImageResult>} - result object */ async function writeImage(image, serializedImage, options = {}) { let inputImage = image; if (typeof options.componentType !== 'undefined' || typeof options.pixelType !== 'undefined') { inputImage = castImage(image, options); } const mimeType = options.mimeType; const extension = getFileExtension(serializedImage).toLowerCase(); let usedWebWorker = options.webWorker; let io = null; if (typeof mimeType !== 'undefined' && mimeToImageIo.has(mimeType)) { io = mimeToImageIo.get(mimeType); } else if (extensionToImageIo.has(extension)) { io = extensionToImageIo.get(extension); } else { for (const readerWriter of imageIoIndex.values()) { if (readerWriter[1] !== null) { let { webWorker: testWebWorker, couldWrite, serializedImage: serializedImageBuffer } = await readerWriter[1](copyImage(inputImage), serializedImage, options); usedWebWorker = testWebWorker; if (couldWrite) { return { webWorker: usedWebWorker, serializedImage: serializedImageBuffer }; } } } } if (!io) { throw Error('Could not find IO for: ' + serializedImage); } const readerWriter = imageIoIndex.get(io); const writer = readerWriter[1]; let { webWorker: testWebWorker, couldWrite, serializedImage: serializedImageBuffer } = await writer(inputImage, serializedImage, options); usedWebWorker = testWebWorker; if (!couldWrite) { throw Error('Could not write: ' + serializedImage); } const result = { webWorker: usedWebWorker, serializedImage: serializedImageBuffer }; return result; } export default writeImage; //# sourceMappingURL=write-image.js.map