メインコンテンツへスキップ

はじめに

Laravel は Image ファサードを通じて、流暢な画像加工 API を提供します。リサイズ・クロップ・エンコード・保存などの操作をフレームワーク全体で一貫した表現方法で記述できます。 内部的には Intervention Image を利用しており、PHP の GD 拡張と Imagick 拡張の両方をサポートしています。
画像処理は CPU とメモリを大量に消費する可能性があります。大規模な画像処理は HTTP リクエスト中に行わず、キュージョブ として処理することを検討してください。
この機能は Laravel v13.20.0 以上 で利用できます。古いバージョンを使用している場合は composer update でフレームワークを最新版に更新してください。

インストール

画像加工機能を使用する前に、Composer で Intervention Image パッケージをインストールします。
また、使用するドライバーに応じて PHP の GD 拡張または Imagick 拡張がインストールされていることを確認してください。

設定

設定ファイルは config/image.php に配置されます。設定ファイルが存在しない場合は Artisan コマンドで公開します。
デフォルトのドライバーは設定ファイルまたは環境変数 IMAGE_DRIVER で指定できます。サポートされているドライバーは gdimagick です。

画像の読み込み

Image ファサードはさまざまなソースから画像インスタンスを生成するメソッドを提供します。画像の内容は遅延読み込みされるため、処理またはバイト列の要求があるまで実際には読み込まれません。

アップロードファイル

リクエストからアップロードされた画像を取得するには image メソッドを使います。ファイルが存在しない場合は null を返します。
UploadedFile インスタンスから生成する場合は fromUpload メソッドを使います。
アップロードファイルから生成した画像インスタンスは file メソッドで元のファイルを取得できます。

ストレージファイル

ファイルシステムディスク に保存されているファイルから画像インスタンスを生成するには fromStorage メソッドを使います。第一引数はファイルパス、第二引数はディスク名です。
Storage ファサードの image メソッドからも生成できます。

その他のソース

バイト列・ローカルパス・URL・Base64 からも画像インスタンスを生成できます。

画像の加工

画像インスタンスはイミュータブルです。各メソッドは変換を処理パイプラインに追加した新しいインスタンスを返すため、メソッドチェーンで記述できます。変換はパイプラインに追加した順に処理され、エンコードは最後に一度だけ行われます。

リサイズ

その他の変換

条件付き変換

画像インスタンスは Conditionable トレイトをサポートしており、when / unless で条件付きの変換が可能です。

エンコード

デフォルトでは元のフォーマットでエンコードされます。フォーマットを変換するには以下のメソッドを使います。
quality メソッドで出力品質(1〜100)を設定できます。
optimize メソッドはフォーマット変換と品質設定のショートカットです。デフォルトは WebP・品質 70 です。
バイト列・Base64・Data URI として取得することもできます。

保存

store メソッドで画像をファイルシステムディスクに保存します。Laravel は一意なファイル名を自動生成し、保存パスを返します。
ファイル名を指定する場合は storeAs を使います。
public 可視性で保存する場合は storePublicly / storePubliclyAs を使います。
保存に失敗した場合は false を返します。

画像情報の取得

mimeTypeextensiondimensionswidthheight メソッドで画像の情報を取得できます。これらのメソッドは処理後の画像を対象とします(例:cover(400, 400) 後に width() を呼ぶと 400 を返します)。

カスタムドライバー

Laravel の画像マネージャーは Illuminate\Support\Manager を継承しており、extend メソッドでカスタムドライバーを登録できます。 カスタムドライバーは Illuminate\Contracts\Image\Driver インターフェースを実装し、process メソッドで元の画像バイト列とパイプラインを受け取り、処理済み画像バイト列を返します。
登録はサービスプロバイダーの boot メソッドで行います。
特定の画像に対してドライバーを指定するには using メソッドを使います。

カスタム変換

Illuminate\Contracts\Image\Transformation インターフェースを実装したクラスでカスタム変換を定義できます。
ハンドラーの登録はサービスプロバイダーの boot メソッドで行います。
登録後は transform メソッドで適用します。
最終更新日 2026年7月16日