画像処理で利用しようと思ったら、v3になっていた。
導入
composer require intervention/image
Controllerでuse宣言
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
実処理
public function store(Request $request)
{
try {
// 画像を取得
$image = $request->file('file');
// 新しいマネージャー インスタンスを作成する
$manager = new ImageManager(new Driver());
// 取得した画像を読み込み
$img = $manager->read($image);
// 画像の拡張子を取得
$extension = $image->getClientOriginalExtension();
// ユニークな画像名を生成(タイムスタンプ + ランダム文字列)
$fileName = 'image_' . time() . '_' . uniqid();
// 画像を保存する
$img->save(storage_path(self::ORIGIN_PATH . $fileName . '.' . $extension));
// 画像の幅と高さを取得
$width = $img->width();
$height = $img->height();
// SP用(幅300、高さ自動)
$mobileImage = $img->scale(width: 300);
// SP画像を保存
$mobileImage->save(storage_path($mobileFilePath));
return response()->json([
'success' => true,
]);
} catch (\Exception $e) {
// アップロードが失敗した場合、エラーメッセージを返す
return response()->json([
'success' => false,
'message' => '画像のアップロードに失敗しました。',
], 500);
}
}
コメント