Update index.html
Browse files- index.html +14 -3
index.html
CHANGED
|
@@ -173,7 +173,7 @@
|
|
| 173 |
undoBtn.disabled = false;
|
| 174 |
const { maskURL } = await getSegmentationMask(pointArr);
|
| 175 |
isSegmenting = false;
|
| 176 |
-
drawMask(maskURL);
|
| 177 |
});
|
| 178 |
async function undoPoint() {
|
| 179 |
if (!hasImage || isEmbedding || isSegmenting) {
|
|
@@ -191,7 +191,7 @@
|
|
| 191 |
isSegmenting = true;
|
| 192 |
const { maskURL } = await getSegmentationMask(pointArr);
|
| 193 |
isSegmenting = false;
|
| 194 |
-
drawMask(maskURL);
|
| 195 |
}
|
| 196 |
function togglePointMode(mode) {
|
| 197 |
bgPointMode = mode ? mode : !bgPointMode;
|
|
@@ -249,7 +249,7 @@
|
|
| 249 |
canvas.parentElement.style.height = "auto";
|
| 250 |
dropButtons.classList.remove("invisible");
|
| 251 |
}
|
| 252 |
-
function drawMask(maskURL) {
|
| 253 |
if (!maskURL) {
|
| 254 |
throw new Error("No mask URL provided");
|
| 255 |
}
|
|
@@ -260,12 +260,23 @@
|
|
| 260 |
img.onload = () => {
|
| 261 |
mask.width = canvas.width;
|
| 262 |
mask.height = canvas.height;
|
|
|
|
| 263 |
ctxMask.drawImage(canvas, 0, 0);
|
| 264 |
ctxMask.globalCompositeOperation = "source-atop";
|
| 265 |
ctxMask.fillStyle = "rgba(255, 0, 0, 0.6)";
|
| 266 |
ctxMask.fillRect(0, 0, canvas.width, canvas.height);
|
| 267 |
ctxMask.globalCompositeOperation = "destination-in";
|
| 268 |
ctxMask.drawImage(img, 0, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 269 |
};
|
| 270 |
img.src = maskURL;
|
| 271 |
}
|
|
|
|
| 173 |
undoBtn.disabled = false;
|
| 174 |
const { maskURL } = await getSegmentationMask(pointArr);
|
| 175 |
isSegmenting = false;
|
| 176 |
+
drawMask(maskURL, pointArr);
|
| 177 |
});
|
| 178 |
async function undoPoint() {
|
| 179 |
if (!hasImage || isEmbedding || isSegmenting) {
|
|
|
|
| 191 |
isSegmenting = true;
|
| 192 |
const { maskURL } = await getSegmentationMask(pointArr);
|
| 193 |
isSegmenting = false;
|
| 194 |
+
drawMask(maskURL, pointArr);
|
| 195 |
}
|
| 196 |
function togglePointMode(mode) {
|
| 197 |
bgPointMode = mode ? mode : !bgPointMode;
|
|
|
|
| 249 |
canvas.parentElement.style.height = "auto";
|
| 250 |
dropButtons.classList.remove("invisible");
|
| 251 |
}
|
| 252 |
+
function drawMask(maskURL, points) {
|
| 253 |
if (!maskURL) {
|
| 254 |
throw new Error("No mask URL provided");
|
| 255 |
}
|
|
|
|
| 260 |
img.onload = () => {
|
| 261 |
mask.width = canvas.width;
|
| 262 |
mask.height = canvas.height;
|
| 263 |
+
ctxMask.save();
|
| 264 |
ctxMask.drawImage(canvas, 0, 0);
|
| 265 |
ctxMask.globalCompositeOperation = "source-atop";
|
| 266 |
ctxMask.fillStyle = "rgba(255, 0, 0, 0.6)";
|
| 267 |
ctxMask.fillRect(0, 0, canvas.width, canvas.height);
|
| 268 |
ctxMask.globalCompositeOperation = "destination-in";
|
| 269 |
ctxMask.drawImage(img, 0, 0);
|
| 270 |
+
ctxMask.globalCompositeOperation = "source-over";
|
| 271 |
+
ctxMask.fillStyle = "rgba(0, 255, 255, 1)";
|
| 272 |
+
for(const pt of points) {
|
| 273 |
+
ctxMask.beginPath();
|
| 274 |
+
ctxMask.arc(pt[0] * canvas.width, pt[1] * canvas.height, 2, 0, 2 * Math.PI);
|
| 275 |
+
ctxMask.fill();
|
| 276 |
+
}
|
| 277 |
+
ctxMask.restore();
|
| 278 |
+
|
| 279 |
+
|
| 280 |
};
|
| 281 |
img.src = maskURL;
|
| 282 |
}
|