diff --git a/src/10th/Roster.jsx b/src/10th/Roster.jsx index 6f5e65b..f1b5fc7 100644 --- a/src/10th/Roster.jsx +++ b/src/10th/Roster.jsx @@ -92,6 +92,7 @@ const Unit = ({ } = unit; const [image, setImage] = useLocalStorage("image" + name); const hasImage = image && image !== "undefined"; + const [bgRemoved, setBgRemoved] = useState(false); const weapons = [...meleeWeapons, ...rangedWeapons]; @@ -163,6 +164,33 @@ const Unit = ({ .replace(")", ""); } + const removeWhiteBackground = (imageSrc) => { + return new Promise((resolve) => { + const img = new Image(); + img.crossOrigin = "Anonymous"; + img.src = imageSrc; + img.onload = () => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0); + + const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + const data = imageData.data; + + for (let i = 0; i < data.length; i += 4) { + if (data[i] > 240 && data[i + 1] > 240 && data[i + 2] > 240) { + data[i + 3] = 0; // Set alpha to 0 + } + } + + ctx.putImageData(imageData, 0, 0); + resolve(canvas.toDataURL()); + }; + }); + }; + return (
)}
+ {hasImage && !bgRemoved && ( + + )}