Closed8

Astroでpictureタグと背景画像の画像最適化したい

kinshistkinshist

やりたいこと

  • 画像の最適化をしたい。(jpgやpngをwebpに変換してほしい)
  • pictureタグで画面幅に合わせて画像を出し分けしたい。
<picture>
  <source srcset="画像のパス" media="(min-width: 1024px)">
  <img src="画像のパス" alt=”代替テキスト”>
</picture>
  • 背景画像も最適化の対象としたい。
  • ビルド時に最適化処理したい。
kinshistkinshist

公式のImageコンポーネントは使わないが、画像のimportまでは公式を踏襲。
pictureタグのsrcに当てはめて独自に対応。
サードパーティのプラグインに頼らないので良さそう。
https://zenn.dev/kg98ztd/articles/b35e6056cad102

同時にpictureタグをwrapしたコンポーネント作ったらさらに良くなるかもしれない。
背景画像もこの方法で行けるかは要検討。

Kazuki YonemotoKazuki Yonemoto

pictureタグをwrapしてやるの良さそうですね。

あとAstroにはgetImage()関数というのがあるみたいなのでこれでカスタムコンポーネントを作るとかも良さそうです。🤔
https://docs.astro.build/ja/guides/images/#getimageで画像を生成する

getImage()関数使ってるパッケージの内部実装とかみてるとこのやり方も良さげそう。
https://github.com/hollyteds/astro-simple-art-direction/blob/main/src/renderers/getFormatImages.ts

kinshistkinshist

importした画像をpictureタグにそのまま入れても最適化処理は行われていないのでgetImage()関数使うのよさそうです!参考になりました!

kinshistkinshist

サードパーティ製のプラグインで最適化する方法。
https://astro-imagetools-docs.vercel.app/en/components-and-apis
https://zenn.dev/asopitech/articles/20230622-003537_1#背景画像の最適化
https://qiita.com/heeroo_ymsw/items/07a4dbeac9515559694f

やりたいことが満たされている。
懸念点として、公式のアップデートスピードに追いついていないところ。
公式のアプデが早すぎるんだけど、現時点で半年くらい更新されていないのが気になる。

kinshistkinshist

qiitaの記事に書いてある通り不要なコードが入ってきてコントロールが難しそう。
実際に試したけど、breakpointやmedia指定で画面幅指定しても変わってくれなかった。
指定が間違っているだけかもしれないけど、単純にPC/SP切り替えたいだけの用途にはオーバースペック感。

kinshistkinshist

結局getImage()関数を使ってコンポーネントを自作することにしたので別で記事書く。
背景画像はコンポーネント化するの難しそう。

このスクラップは3ヶ月前にクローズされました