aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/playground/canvas/+page.svelte
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2026-03-25 12:22:23 +0100
committerLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2026-03-25 12:22:23 +0100
commita357a83860aaac90b37832de066e5a5a016910ea (patch)
treefc1b3e812556dc0d05294ea8f65473e3628fae42 /src/routes/playground/canvas/+page.svelte
parenteef6a55c5efdc4c542a1a9011b59d6917b9772b5 (diff)
downloadmem-estrogen-zone-a357a83860aaac90b37832de066e5a5a016910ea.tar.gz
mem-estrogen-zone-a357a83860aaac90b37832de066e5a5a016910ea.tar.bz2
mem-estrogen-zone-a357a83860aaac90b37832de066e5a5a016910ea.tar.lz
mem-estrogen-zone-a357a83860aaac90b37832de066e5a5a016910ea.zip

feat: figured i'd revisit this code i wrote as a shitpost, it seems quite decent actually

Diffstat (limited to 'src/routes/playground/canvas/+page.svelte')
-rw-r--r--src/routes/playground/canvas/+page.svelte54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/routes/playground/canvas/+page.svelte b/src/routes/playground/canvas/+page.svelte
new file mode 100644
index 0000000..04127c1
--- /dev/null
+++ b/src/routes/playground/canvas/+page.svelte
@@ -0,0 +1,54 @@
+<script>
+ import CanvasCopy from '$/lib/test/canvas/CanvasCopy.svelte';
+ import CanvasImg from '$/lib/test/canvas/CanvasImg.svelte';
+ import { resolve } from '$app/paths';
+ let fixPaddingArtifacts = $state(false);
+ let useBg = $state(true);
+ let src = $state(resolve('/') + 'estrogen-half.png');
+ let alt = $state('Favicon');
+</script>
+
+<h1 class="text-3xl">Canvas Playground</h1>
+
+<p>
+ Here's some fucking around with the HTML canvas element, initially mostly to
+ do a funny bit of obscuring images as found in the DOM.
+</p>
+
+<h2 class="text-xl">Plain Img</h2>
+<p>Normal image tag.</p>
+
+<div class="rounded-2xl"><img {src} {alt} /></div>
+
+<h2 class="text-xl">CanvasImg</h2>
+<p>
+ Simple <code>canvas</code>-based copying of the contents and converting to
+ blob. Falls back to source image.
+</p>
+<div class="rounded-2xl"><CanvasImg {src} {alt} /></div>
+
+<h2 class="text-xl">CanvasCopy</h2>
+<p>
+ A more involved technique, copying sections of the canvas source and rendering
+ them in separate image elements, still falling back to source image.
+</p>
+<p>
+ Single-pixel artifacts on high-dpi and non-1:1 scaled images can be solved by
+ creating an overlapping pixel on each edge. This, however, messes up partial
+ transparency.<br />
+ <label
+ ><input type="checkbox" bind:checked={fixPaddingArtifacts} /> Fix Artifacts</label
+ >
+ <label
+ ><input type="checkbox" bind:checked={useBg} /> Use background-image to reduce
+ element count</label
+ >
+</p>
+<div class="rounded-2xl">
+ <CanvasCopy
+ {src}
+ {alt}
+ artifacts={fixPaddingArtifacts ? 'fix' : 'keep'}
+ {useBg}
+ />
+</div>