11let html = `<h1>${valTownInspo.title}</h1>
12<p>${valTownInspo.description}</p>
13<a href="https://val.town/${valTownInspo.val}"><img src="${valTownInspo.image}" style="max-width:576px"/></a>
14<p><a href="https://www.val.town/settings/intervals">Unsubscribe here</a></p>`;
15
wholesomeCyanLobstermain.tsx1 match
11let html = `<h1>${valTownInspo.title}</h1>
12<p>${valTownInspo.description}</p>
13<a href="https://val.town/${valTownInspo.val}"><img src="${valTownInspo.image}" style="max-width:576px"/></a>
14<p><a href="https://www.val.town/settings/intervals">Unsubscribe here</a></p>`;
15
perceptiveSilverDogmain.tsx1 match
11let html = `<h1>${valTownInspo.title}</h1>
12<p>${valTownInspo.description}</p>
13<a href="https://val.town/${valTownInspo.val}"><img src="${valTownInspo.image}" style="max-width:576px"/></a>
14<p><a href="https://www.val.town/settings/intervals">Unsubscribe here</a></p>`;
15
generateframeImageREADME.md2 matches
1## MOVED TO: [https://www.val.town/x/michaelwschultz/frame](https://www.val.town/x/michaelwschultz/frame)
23### Gathers information and returns an image of this val
45### Why
14actually draw things to a screen like all the e-ink display libraries.
1516Migrated from folder: Archive/generateframeImage
highGreenTahrmain.tsx1 match
11let html = `<h1>${valTownInspo.title}</h1>
12<p>${valTownInspo.description}</p>
13<a href="https://val.town/${valTownInspo.val}"><img src="${valTownInspo.image}" style="max-width:576px"/></a>
14<p><a href="https://www.val.town/settings/intervals">Unsubscribe here</a></p>`;
15
MoonCatWalkmain.tsx2 matches
221left: `${petState.x}px`,
222top: `${petState.y}px`,
223backgroundImage:
224`url('https://ipfs.io/ipfs/bafybeib5iedrzr7unbp4zq6rkrab3caik7nw7rfzlcfvu4xqs6bfk7dgje/${spriteNum}.png')`,
225backgroundPosition: `-${petState.frameIndex * SPRITE_SIZE}px -${ROW_INDEX[petState.animation] * SPRITE_SIZE}px`,
288height: calc(var(--scale) * 32px);
289background-size: calc(var(--scale) * 512px) calc(var(--scale) * 256px);
290image-rendering: pixelated;
291}
292
vttThumbMakermain.tsx23 matches
35<h1>Thumbnail Maker</h1>
36<div id="dropZone">
37<p>📷 Drag & drop images here or click to select</p>
38<input type="file" id="fileInput" multiple accept="image/*">
39</div>
40<div id="thumbnailOptions">
59Output Format:
60<select id="outputFormat">
61<option value="image/png">PNG</option>
62<option value="image/jpeg">JPEG</option>
63<option value="image/webp">WebP</option>
64</select>
65</label><br>
76<button id="downloadMetadataBtn">Download Metadata</button>
77</div>
78<div id="imagePreview"></div>
79</div>
80</body>
140select {
141appearance: none;
142background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M10.293 3.293L6 7.586 1.707 3.293A1 1 0 00.293 4.707l5 5a1 1 0 001.414 0l5-5a1 1 0 10-1.414-1.414z' fill='%23333'/%3E%3C/svg%3E");
143background-repeat: no-repeat;
144background-position: right 10px center;
206}
207208#imagePreview {
209margin-top: 20px;
210text-align: center;
211}
212213#imagePreview img {
214max-width: 100%;
215height: auto;
233const keepAspectRatio = document.getElementById('keepAspectRatio');
234const thumbWidth = document.getElementById('thumbWidth');
235const imagePreview = document.getElementById('imagePreview');
236const thumbnailOptions = document.getElementById('thumbnailOptions');
237const renderOptions = document.getElementById('renderOptions');
251renderOptions.style.display = 'none';
252downloadSection.style.display = 'none';
253imagePreview.innerHTML = '';
254thumbnailCanvas = null;
255thumbnailMetadata = null;
276event.preventDefault();
277dropZone.classList.remove('drag-over');
278files = Array.from(event.dataTransfer.files).filter(file => file.type.startsWith('image/'));
279resetToStep1();
280});
291progressBar.value = 0;
292293const image0 = await getImage(files[0]);
294const cols = Math.ceil(Math.sqrt(files.length));
295const rows = Math.ceil(files.length / cols);
296const tHeight = parseInt(thumbHeight.value);
297let tWidth = keepAspectRatio.checked
298? Math.floor(tHeight / image0.height * image0.width)
299: parseInt(thumbWidth.value);
300302const canvasHeight = rows * tHeight;
303304image0.revoke();
305306thumbnailCanvas = new OffscreenCanvas(canvasWidth, canvasHeight);
312const row = Math.floor(i / cols);
313314const img = await getImage(file);
315ctx.drawImage(img, col * tWidth, row * tHeight, tWidth, tHeight);
316img.revoke();
317345const blob = await thumbnailCanvas.convertToBlob({
346type: outputFormat.value,
347quality: outputFormat.value !== 'image/png' ? parseFloat(outputQuality.value) : undefined
348});
349353downloadSection.style.display = 'flex';
354355// Display the generated image
356const img = document.createElement('img');
357img.src = url;
358imagePreview.innerHTML = '';
359imagePreview.appendChild(img);
360361progressBar.style.display = 'none';
377});
378379function getImage(file) {
380return new Promise((resolve) => {
381const url = URL.createObjectURL(file);
382const img = new Image();
383img.revoke = () => URL.revokeObjectURL(url);
384img.onload = () => resolve(img);
altairClientREADME.md1 match
23<div align="center">
4<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/b1963886-2c4e-4aac-34ec-4c0a50539a00/public" />
5</div>
6
getProfileProfilePagemain.tsx7 matches
9name: string;
10description: string;
11image: {
12url: string;
13ipfs_cid: string;
14};
15backgroundImage: {
16url: string;
17ipfs_cid: string;
22const fallbackUrl = "https://ipfs.near.social/ipfs/bafkreibmiy4ozblcgv3fm3gc6q62s55em33vconbavfd2ekkuliznaq3zm";
2324const getImageUrl = (image?: { url?: string; ipfs_cid?: string }) => {
25if (image?.url) return image.url;
26if (image?.ipfs_cid) return `https://ipfs.near.social/ipfs/${image.ipfs_cid}`;
27return fallbackUrl;
28};
122<div
123className="min-h-screen w-full bg-cover bg-center flex flex-col justify-center items-center py-16 margin-auto relative"
124style={{ backgroundImage: loading ? "none" : `url(${getImageUrl(profile?.backgroundImage) || ""})` }}
125>
126<div className="bg-white bg-opacity-95 p-8 rounded-xl shadow-2xl text-center max-w-2xl w-full lg:max-w-[1024px] w-full z-10 backdrop-blur-sm">
129{showBirthdayBanner && <BirthdayBanner name={profile?.name ?? accountId} />}
130<img
131src={getImageUrl(profile?.image)}
132alt={profile?.name}
133className="w-32 h-32 rounded-full object-cover mx-auto mb-4 shadow-lg"
blob_adminREADME.md1 match
3This is a lightweight Blob Admin interface to view and debug your Blob data.
45
67## Installation