painbrush

1.0.21.1.0
src/layer/make-image.js
+src/layer/make-image.jsNew file
+32
Index: package/src/layer/make-image.js
===================================================================
--- package/src/layer/make-image.js
+++ package/src/layer/make-image.js
@@ -0,0 +1,32 @@
+import { decode } from "fast-bmp";
+import { deflateLayer, inflateLayer } from "./transform.js";
+export const makeImageLayer = (buffer) => {
+    const imageData = decode(buffer);
+    if (imageData.bitsPerPixel === 1) {
+        console.warn("Inflating 1bit image to 24. Will use default colors in inflateLayer");
+        return inflateLayer({
+            //@ts-expect-error
+            data: [...imageData.data],
+            ...imageData,
+            isSingleChannel: true,
+            id: Math.random(),
+        });
+    }
+    if (imageData.bitsPerPixel === 24) {
+        return {
+            ...imageData,
+            data: [...imageData.data],
+            id: Math.random(),
+        };
+    }
+    if (imageData.bitsPerPixel === 32) {
+        console.warn("Deflating 32bit image to 24bit. Alpha will be guessed (did u know bmps have alpha??)");
+        return deflateLayer({
+            ...imageData,
+            data: [...imageData.data],
+            isFourChannel: true,
+            id: Math.random(),
+        });
+    }
+    throw new Error(`Unsupported image type (${imageData.bitsPerPixel}bpp), try using fast-bmp alone to get a 1/24/32 bit buffer`);
+};