Skip to main content
Back to all posts

Image Usage

Published on by FjellOverflow · 2 min read

This post provides a quick overview of image and Open Graph image usage in Nordlys. For more detailed information on how Astro handles images, please consult the documentation.

Embedding images

Astro, and by extension Nordlys, offers various ways to use images in your content.

Images in Markdown

In all Markdown (.md) files, images can be embedded using the usual syntax. Astro will resolve local assets as the image source.

src/content/posts/my-post.md
![Nordlys logo](@/assets/logo.svg)
  or
![Nordlys logo](../../assets/logo.svg)
  or
![Nordlys logo](src/assets/logo.svg)
Nordlys logo, a drawing of two gray mountains with green northern lights in the background

Images in MDX

In Astro (.astro) or MDX (.mdx) files, you can also use Astro’s built-in <Image> component.

src/pages/my-page.astro
---
import logo from '@/assets/logo.svg'
import { Image } from 'astro:assets'
---
<Image alt="Nordlys logo" src={logo} />
Nordlys logo, a drawing of two gray mountains with green northern lights in the background

Public images

In addition to local assets, we can also use images from the public directory or from the web.

src/pages/my-page.md
From the `public` folder:
![Nordlys favicon](/favicon.svg)

From the web:
![Nordlys favicon](https://nordlys.fjelloverflow.dev/favicon.svg)
Nordlys favicon

data-img-embed

For a nice embedding of images into the content, you can use the data-img-embed attribute. This will give the image a bordered, rounded appearance and users can zoom it on click.

src/pages/my-page.md
// embedded image
<img src="/preview.png" data-img-embed/>
<img src="/preview.png" data-img-embed="true"/>

// normal apperance
<img src="/preview.png"/>
<img src="/preview.png" data-img-embed="false"/>

Nordlys preview

Open Graph Images

Images and image URLs can be used in frontmatter, for instance as openGraphImage. To use a local asset, use:

src/content/posts/my-post.md
openGraphImage: "@/assets/logo.svg"
  or
openGraphImage: "../../assets/logo.svg"
  or
openGraphImage: "src/assets/logo.svg"

To use a public image, use:

src/content/posts/my-post.md
openGraphImage: "/favicon.svg"
  or
openGraphImage: "https://nordlys.fjelloverflow.dev/favicon.svg"

Note that supplying openGraphImage is entirely optional. If a post (any file in src/content/posts) does not have an openGraphImage provided, Nordlys will automatically generate and use a basic template, displaying the post title, description, author, and website title, which looks like this:

Example post OG image, showing the website name, logo, post title, description and author

Similarly, when there is no global openGraphImage configured in theme.config.ts, Nordlys generates and uses a generic image that displays the site title and description on every page where none has been defined, looking like this:

Example site OG image, showing the website name, logo and description