image-js
Version:
Image processing and manipulation in JavaScript
53 lines • 1.51 kB
JavaScript
import { decode } from 'fast-bmp';
import { Image } from "../Image.js";
import { Mask } from "../Mask.js";
/**
* Decode a BMP. See the fast-bmp npm module.
* @param data - The data to decode.
* @returns The decoded image or mask.
*/
export function decodeBmp(data) {
const decodedData = decode(data);
if (decodedData.bitsPerPixel === 1) {
const mask = new Mask(decodedData.width, decodedData.height, {
data: decodedData.data,
});
return mask.convertColor('GREY');
}
else {
let colorModel;
switch (decodedData.channels) {
case 1:
colorModel = 'GREY';
break;
case 3:
colorModel = 'RGB';
break;
default:
colorModel = 'RGBA';
break;
}
return new Image(decodedData.width, decodedData.height, {
colorModel,
data: decodedData.data,
resolution: getBmpResolution(decodedData),
});
}
}
/**
* Gets image's resolution from its parsed data. BMP stores resolution in
* pixels per meter.
* @param bmp - Parsed BMP image.
* @returns Object with resolution data if it is defined.
*/
function getBmpResolution(bmp) {
if (!bmp.xPixelsPerMeter || !bmp.yPixelsPerMeter) {
return undefined;
}
return {
x: bmp.xPixelsPerMeter,
y: bmp.yPixelsPerMeter,
unit: 'meter',
};
}
//# sourceMappingURL=decodeBmp.js.map