UNPKG

image-js

Version:

Image processing and manipulation in JavaScript

53 lines 1.51 kB
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