| | 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) { |
| | |
| | data[i] = 0; |
| | data[i + 1] = 0; |
| | data[i + 2] = 0; |
| | } else { |
| | |
| | data[i + 3] = 0; |
| | } |
| | } |
| |
|
| | ctx.putImageData(imageData, 0, 0); |
| |
|
| | resolve(canvas.toDataURL()); |
| | }; |
| |
|
| | img.onerror = (err) => { |
| | reject(err); |
| | }; |
| |
|
| | img.src = imageBase64; |
| | }); |
| | } |