From dfa4d132486e3d123819390131905dbd79d92d4b Mon Sep 17 00:00:00 2001 From: LazuliKao Date: Sun, 22 Sep 2024 20:41:33 +0800 Subject: [PATCH] fix cover --- src/layouts/MoreTile.astro | 7 +++---- src/layouts/Tile.astro | 6 +++++- src/utils/image.ts | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/utils/image.ts diff --git a/src/layouts/MoreTile.astro b/src/layouts/MoreTile.astro index 6a95970..638a5ec 100644 --- a/src/layouts/MoreTile.astro +++ b/src/layouts/MoreTile.astro @@ -1,14 +1,13 @@ --- import { formatDate } from "../utils" const { title, href, cover, tags, date } = Astro.props - +import { fixImage } from "../utils/image" const dateFormatted = formatDate(date) const type = tags?.[0] ?? "默认" -let image: string - = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg" +let image = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg" if (image.startsWith("./")) { - image = `./${href}${image.slice(1)}` + image = await fixImage(image, href) } const label = `${title} - ${type} - 发表时间 ${dateFormatted}`; diff --git a/src/layouts/Tile.astro b/src/layouts/Tile.astro index ef6daeb..e0af35c 100644 --- a/src/layouts/Tile.astro +++ b/src/layouts/Tile.astro @@ -1,11 +1,15 @@ --- import { formatDate } from "../utils" const { title, href, cover, tags, date, level } = Astro.props +import { fixImage } from "../utils/image" const dateFormatted = formatDate(date) const type = tags[0] const label = `${title} - ${type} - 发表时间 ${dateFormatted}` -const image = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg"; +let image = cover?.url ?? cover ?? "https://oss.nbtca.space/CA-logo.svg" +if (image.startsWith("./")) { + image = await fixImage(image, href) +} // level 1: hero // level 2: 2up diff --git a/src/utils/image.ts b/src/utils/image.ts new file mode 100644 index 0000000..4226821 --- /dev/null +++ b/src/utils/image.ts @@ -0,0 +1,20 @@ +import { getImage } from "astro:assets" + +export async function fixImage(image: string, href: string) { + try { + const sliceHref = href.slice(0, href.lastIndexOf("/") + 1)// get the dir of the current page(remove filename) + const imageLocation = await import( + /* @vite-ignore */ `/src/pages${sliceHref}${image.slice(1)}` + )// static import of the image + image = imageLocation.default + return ( + await getImage({ // resolve the images + src: image, + inferSize: true, + }) + ).src + } + catch (error) { + console.log(error) + } +}