Laravelプロジェクトで画像のリサイズを行う場合、PHP標準のGDライブラリを使用することで、簡単に実装できます。
この記事では、LaravelでGDライブラリを利用して、画像をリサイズする方法を解説します。
GDライブラリの基本をまず↓で抑えるといいかもです!
GDライブラリのインストール
LaravelプロジェクトでGDライブラリを使用するには、まずPHPのGDライブラリがインストールされていることを確認してください。
以下のコマンドを実行して、GDライブラリがインストールされているか確認しましょう。
php -i | grep -i "GD"
もし、GDライブラリがインストールされていなければ、以下のようにインストールしてください。
# Ubuntuの場合
sudo apt-get install php-gd
# CentOSの場合
sudo yum install php-gd
インストール後、PHPを再起動してください。
sudo service php-fpm restart
画像リサイズ処理の実装
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; }
画像リサイズ処理の実行
ControllerやMiddlewareなどで、上で、画像リサイズ処理を実行する方法を見てみましょう。以下の例では、フォームから画像をアップロードし、その画像をリサイズして保存する例を示します。
ルーティングの設定
まず、画像アップロード用のルートを設定します。routes/web.php
に以下のコードを追加してください。
Route::get('/upload', 'ImageController@uploadForm');
Route::post('/upload', 'ImageController@upload')->name('image.upload');
コントローラーの作成
次に、画像アップロードとリサイズ処理を行うコントローラーを作成します。以下のコマンドで、ImageController
を生成します。
php artisan make:controller ImageController
コントローラーの実装
生成された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', '画像がアップロードされ、リサイズが完了しました。');
}
アップロードフォームの作成
画像アップロード用のフォームを作成します。
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ライブラリには、さらに多くの機能がありますので、公式ドキュメントやチュートリアルを参考にして、さらに高度な画像処理を実現してみてください。
例えば、画像の回転やフィルタリング、透明度の調整など、様々な画像処理を行うことができます。
その他の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;
}
画像のフィルタリング
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;
}
GDライブラリを使って、さらに多くの画像処理を試してみましょう!
機能はたくさんあるので、アプリケーションでの応用が広がりますね。
これで、LaravelでGDライブラリを使用して画像をリサイズする方法とその他の機能について学ぶことができました。
ぜひ実際のプロジェクトで活用して、より良いアプリケーションを開発してください。
コメント