LoginSignup
0
0

More than 1 year has passed since last update.

あるWebサービスの開発メモ・nextjs におけるイメージファイルのリサイズ

Last updated at Posted at 2022-11-04

モチベーション

当サービスでは BaaS に Supabase を採用していますが、Storage 間でのファイル転送にかかる帯域消費が大きくなってきており、できれば改善したいと思っています

Supabase の Pro プラン (有償プランで最小の tier) では 20GB/月 の帯域が認められており、これを超えると 0.09USD/GB で従量課金されます。次の戦略で Storage 間でのファイル転送にかかる帯域を抑えようと思っています

もともと期待していたこと

ちょっと前に見かけた情報だったのですが、supabase では supabase API で Storage にイメージファイルをアップロードする際にイメージファイルをリサイズする機能を 2022年度の第3四半期にリリースするとアナウンスしていたはずです。この機能を期待して、現状ではイメージファイルのリサイズについては何も考慮していませんでした。2022 年 11 月 4 日現在、この機能に関するアナウンスは無いようなので、別の方式でリサイズを検討してみようと思いました

イメージのアップロード時にリサイズする

以下の方式で実装してみようと思います

ハマりポイントその1

  const compressOption = {
    maxSizeMB: 1,
    maxWidthOrHeight: 400,
  };

このパラメータを変更してもアップロードしたファイルのサイズが変わらない、という問題が発生しました。開発サーバを再起動してもダメで、新規ブラウザ (新しいタブでOK) でアクセスするとファイルサイズが変わりました

ハマりポイントその2

ハマりポイントというほどではありませんが、maxSizeMB を 0.2 のように小数点付きの値を指定したところ無視されました。整数のみ指定できるようです

Image Component を使う

いろいろな記事で「Image Component 使えよ」と言われ続けてきましたが、img タグを使っています。こちらの記事を見かけて「これならいけるかも」と思っているところです

結果発表

Image Component で img タグと同等の表示をさせたくて、いろいろと試行錯誤してみたのですが、うまくいきませんでした。Browser Image Compression でイメージファイルは充分リサイズできているので、ここは imgタグ のままで様子見することにしました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0