File size: 1,490 Bytes
2728346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
export function replaceNonWhiteWithTransparent(imageBase64: string): Promise<string> {
    return new Promise((resolve, reject) => {
        const img = new Image();
        img.onload = () => {
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            if (!ctx) {
                reject('Unable to get canvas context');
                return;
            }

            const ratio = window.devicePixelRatio || 1;
            canvas.width = img.width * ratio;
            canvas.height = img.height * ratio;
            ctx.scale(ratio, ratio);

            ctx.drawImage(img, 0, 0);

            const imageData = ctx.getImageData(0, 0, img.width, img.height);
            const data = imageData.data;
            console.log("ok")

            for (let i = 0; i < data.length; i += 4) {
                if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) {
                    // Change white (also shades of grays) pixels to black
                    data[i] = 0;
                    data[i + 1] = 0;
                    data[i + 2] = 0;
                } else {
                    // Change all other pixels to transparent
                    data[i + 3] = 0;
                }
            }

            ctx.putImageData(imageData, 0, 0);

            resolve(canvas.toDataURL());
        };

        img.onerror = (err) => {
            reject(err);
        };

        img.src = imageBase64;
    });
}