-->
Astroでは、画像表示の際に通常通りにimgタグでの表示と、Astro専用の
ここでは、後者の
使用方法
src/pages/blog/MyImages.astro
---
import { Image } from 'astro:assets';
import localBirdImage from '../../images/subfolder/localBirdImage.png';
---
<Image src={localBirdImage} alt="巣の中の卵を温めている鳥。"/>
<Image src="/images/bird-in-public-folder.jpg" alt="鳥。" width="50" height="50"/>
<Image src="https://example.com/remote-bird.jpg" alt="鳥。" width="50" height="50"/>
<img src={localBirdImage.src} alt="巣の中の卵を温めている鳥。">
<img src="/images/bird-in-public-folder.jpg" alt="鳥。">
<img src="https://example.com/remote-bird.jpg" alt="鳥。">
imgタグでもインポートした画像表示は可能だが、画像処理はスキップされます。
Cumulative Layout Shift(CLS)の最適化
↑はhttps://pagespeed.web.dev/?hl=jaでのページパフォーマンスの点数の1つであるが、
そちらの最適化もしてくれます。
src/components/MyComponent.astro
---
// Imageコンポーネントと画像をインポートする
import { Image } from 'astro:assets';
import myImage from "../assets/my_image.png"; // 画像は1600x900
---
<!-- `alt`はImageコンポーネントでは必須です -->
<Image src={myImage} alt="画像の説明。" />
<!-- 出力 -->
<!-- 画像は最適化され、適切な属性が必ず付与されます -->
<img
src="/_astro/my_image.hash.webp"
width="1600"
height="900"
decoding="async"
loading="lazy"
alt="画像の説明。"
/>
上記のことから、自分はこの形で画像を導入して表示までおこなっている。
もちろんインポートせずに画像表示できる
その場合、srcフォルダではなくpublicフォルダに入れてそちらを参照する
公式サイトを参考に
https://docs.astro.build/ja/guides/images/