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 |
}
|