21 lines
608 B
TypeScript
21 lines
608 B
TypeScript
import { Resvg } from "@resvg/resvg-js";
|
|
import { type CollectionEntry } from "astro:content";
|
|
import postOgImage from "./og-templates/post";
|
|
import siteOgImage from "./og-templates/site";
|
|
|
|
function svgBufferToPngBuffer(svg: string) {
|
|
const resvg = new Resvg(svg);
|
|
const pngData = resvg.render();
|
|
return pngData.asPng();
|
|
}
|
|
|
|
export async function generateOgImageForPost(post: CollectionEntry<"blog">) {
|
|
const svg = await postOgImage(post);
|
|
return svgBufferToPngBuffer(svg);
|
|
}
|
|
|
|
export async function generateOgImageForSite() {
|
|
const svg = await siteOgImage();
|
|
return svgBufferToPngBuffer(svg);
|
|
}
|