@itk-wasm/image-io
Version:
Input and output for scientific and medical image file formats.
57 lines • 2.34 kB
JavaScript
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