Laravelとintervention/imageの3で画像アップロード

2024.08.02 09:00
2024.08.02 10:22
Laravelとintervention/imageの3で画像アップロード

Laravelの11を使おうと思ったら、画像アップロードライブラリであるintervention/imageのバージョンが2から3になっていて、かつ内容がだいぶ変わっていたので、対応をメモしました。

自分が使ってる範囲で変わったのは、画像リサイズである「resize」と画像の比率を保持する「aspectRatio」、元サイズ以上の拡大を防ぐ「upsize」、画像の回転を修正する「orientate」でした。

以前の2だとこんな感じ。

// 比率を保ったままリサイズ
$img->resize($width, null, function ($constraint) {
    $constraint->aspectRatio();
    $constraint->upsize();
})->orientate();

これを3にするとこんな感じになります。

$manager = new ImageManager(new Driver());
$img = $manager->read(POSTされたデータのパス);

// 比率を保ったままリサイズ
$img->scaleDown(width: 300);

// 縦横を調整
$img->orient();

// クォリティを指定して保存
$img->save(保存する画像のパス, 80);

シンプルでわかりやすくなりましたね。
scaleDownは元サイズをこえなければ、横300で比率を保ったままリサイズします。

2から3にアップデートするときのガイドもあるみたいですね。
https://image.intervention.io/v3/introduction/upgrade

今回は以上です!