polymech-astro/packages/imagetools_3/api/utils/getFallbackImage.js
2026-02-01 12:11:04 +01:00

44 lines
982 B
JavaScript

// @ts-check
import getSrcset from "./getSrcset.js";
import { sharp } from "../../utils/runtimeChecks.js";
export default async function getFallbackImage(
src,
placeholder,
image,
format,
formatOptions,
rest
) {
const base = null;
switch (placeholder) {
case "blurred": {
const dataUri = await getSrcset(src, base, [20], format, {
inline: true,
...rest,
...formatOptions[format],
});
return dataUri;
}
case "tracedSVG": {
return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" style="background: rgb(0,0,0)"></svg>`;
}
case "dominantColor": {
if (sharp) {
var { r, g, b } = (await image.stats()).dominant;
} else {
[r, g, b] = image.color;
}
const svg = `<svg xmlns="http://www.w3.org/2000/svg" style="background: rgb(${r},${g},${b})"></svg>`;
return `data:image/svg+xml;utf8,${svg}`;
}
default:
return null;
}
}