LaravelでGDライブラリを使用して画像をリサイズする方法

Laravelプロジェクトで画像のリサイズを行う場合、PHP標準のGDライブラリを使用することで、簡単に実装できます。

この記事では、LaravelでGDライブラリを利用して、画像をリサイズする方法を解説します。

とびうおくん
とびうおくん

GDライブラリの基本をまず↓で抑えるといいかもです!

PHPのGDライブラリの基本的な関数について
PHPのGDライブラリは、画像処理に関する強力な機能を提供します。この記事では、GDライブラリの基本的な関数であるimagecreate()、imagecolorallocate()、およびimagesetpixel()について解...

GDライブラリのインストール

LaravelプロジェクトでGDライブラリを使用するには、まずPHPのGDライブラリがインストールされていることを確認してください。

以下のコマンドを実行して、GDライブラリがインストールされているか確認しましょう。

php -i | grep -i "GD"
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

もし、GDライブラリがインストールされていなければ、以下のようにインストールしてください。

# Ubuntuの場合
sudo apt-get install php-gd

# CentOSの場合
sudo yum install php-gd
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

インストール後、PHPを再起動してください。

sudo service php-fpm restart
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

画像リサイズ処理の実装

Laravelで画像のリサイズ処理を実装するために、まずは適切なディレクトリに画像ファイルがアップロードされるようにしましょう。

以下の例では、public/imagesディレクトリに画像がアップロードされることを想定しています。

続いて、画像リサイズ処理を行うメソッドを実装します。

public function resizeImage($image_path, $new_width, $new_height)
{
    // 元の画像を読み込む
    $source_image = imagecreatefromjpeg($image_path);

    // 元の画像のサイズを取得
    $source_width = imagesx($source_image);
    $source_height = imagesy($source_image);

    // リサイズ後の画像を作成
    $new_image = imagecreatetruecolor($new_width, $new_height);

    // 画像をリサイズ
    imagecopyresampled($new_image, $source_image, 0, 0, 0, 0, $new_width, $new_height, $source_width, $source_height);

    // リサイズ後の画像を保存
    imagejpeg($new_image, 'resized_image.jpg');

    // 画像リソースを解放
    imagedestroy($source_image);
    imagedestroy($new_image);

    return true;
}
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

画像リサイズ処理の実行

ControllerやMiddlewareなどで、上で、画像リサイズ処理を実行する方法を見てみましょう。以下の例では、フォームから画像をアップロードし、その画像をリサイズして保存する例を示します。

ルーティングの設定

まず、画像アップロード用のルートを設定します。routes/web.phpに以下のコードを追加してください。

Route::get('/upload', 'ImageController@uploadForm');
Route::post('/upload', 'ImageController@upload')->name('image.upload');
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

コントローラーの作成

次に、画像アップロードとリサイズ処理を行うコントローラーを作成します。以下のコマンドで、ImageControllerを生成します。

php artisan make:controller ImageController
LaravelでGDライブラリを使用して画像をリサイズする方法

コントローラーの実装

生成されたImageControllerに、以下のコードを追加してください。

use Illuminate\Http\Request;

public function uploadForm()
{
    return view('upload_form');
}

public function upload(Request $request)
{
    // 画像のバリデーション
    $request->validate([
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    // 画像を保存
    $imageName = time().'.'.$request->image->extension();
    $request->image->move(public_path('images'), $imageName);

    // 画像をリサイズ
    $image_path = public_path('images').'/'.$imageName;
    $this->resizeImage($image_path, 150, 150);

    return back()
        ->with('success', '画像がアップロードされ、リサイズが完了しました。');
}
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

アップロードフォームの作成

画像アップロード用のフォームを作成します。

resources/views/upload_form.blade.phpファイルを作成し、以下のコードを追加してください。

<form action="{{ route('image.upload') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="image" required>
    <button type="submit">アップロード</button>
</form>
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

これで、画像をアップロードし、リサイズ処理を実行する準備が整いました。

とびうおくん
とびうおくん

これでLaravelでGDライブラリを使って画像をリサイズする方法が理解できたはずですね!

実際にアプリケーションで試してみてください。

今回解説した方法を利用すれば、Laravelプロジェクトで簡単に画像のリサイズ処理を実装できます。

GDライブラリには、さらに多くの機能がありますので、公式ドキュメントやチュートリアルを参考にして、さらに高度な画像処理を実現してみてください。

例えば、画像の回転やフィルタリング、透明度の調整など、様々な画像処理を行うことができます。

その他のGDライブラリ機能

以下に、GDライブラリで実現できるいくつかの機能を紹介します。

画像の回転

imagerotate()関数を使用して、画像を指定した角度で回転させることができます。

public function rotateImage($image_path, $angle)
{
    $source_image = imagecreatefromjpeg($image_path);
    $rotated_image = imagerotate($source_image, $angle, 0);
    imagejpeg($rotated_image, 'rotated_image.jpg');
    imagedestroy($source_image);
    imagedestroy($rotated_image);

    return true;
}
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法

画像のフィルタリング

imagefilter()関数を使用して、画像に様々なフィルタを適用することができます。

例えば、画像の明るさを調整したり、ネガポジ反転させたりできます。

public function applyFilter($image_path, $filter_type)
{
    $source_image = imagecreatefromjpeg($image_path);
    imagefilter($source_image, $filter_type);
    imagejpeg($source_image, 'filtered_image.jpg');
    imagedestroy($source_image);

    return true;
}
LaravelでGDライブラリを使用して画像をリサイズする方法
LaravelでGDライブラリを使用して画像をリサイズする方法
とびうおくん
とびうおくん

GDライブラリを使って、さらに多くの画像処理を試してみましょう!

機能はたくさんあるので、アプリケーションでの応用が広がりますね。

これで、LaravelでGDライブラリを使用して画像をリサイズする方法とその他の機能について学ぶことができました。

ぜひ実際のプロジェクトで活用して、より良いアプリケーションを開発してください。

とびちゃん
とびちゃんは最新のAI技術を併用しながら記事を書く子です!とってもいい子!

コメント

タイトルとURLをコピーしました