Валідація розмірів зображень за допомогою правила dimensions у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 02 квітня, 2025
Laravel пропонує потужні можливості валідації зображень за допомогою правила розмірів, що дозволяє контролювати розміри та пропорції медіа, завантажуваних у вашій програмі. Дізнайтеся, як реалізувати стратегічний підхід до валідації зображень і забезпечити оптимальну якість медіа в нашій статті

Laravel надає потужні можливості для валідації зображень за допомогою правила dimensions, що дозволяє детально контролювати розміри та пропорції медіафайлів під час їх завантаження у вашу програму

Простий приклад реалізації демонструє гнучкість цього правила:

use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;

// Основна валідація
$validator = Validator::make($request->all(), [
    'profile_photo' => [
        'required',
        Rule::dimensions()
            ->minWidth(400)
            ->minHeight(400)
            ->maxWidth(2000)
            ->maxHeight(2000)
    ]
]);

Ось як реалізувати комплексну стратегію валідації зображень у системі управління медіа:

class MediaController extends Controller
{
    public function upload(Request $request)
    {
        $imageType = $request->input('type', 'standard');

        $rules = [
            'image' => array_merge(
                ['required', 'image', 'max:10240'], // максимальний розмір 10 МБ
                $this->getDimensionRules($imageType)
            )
        ];

        $request->validate($rules);

        // Обробка та збереження валідаційного зображення
        $path = $request->file('image')->store('media/' . $imageType);

        return response()->json([
            'success' => true,
            'path' => $path
        ]);
    }

    protected function getDimensionRules(string $type): array
    {
        return match($type) {
            'thumbnail' => [
                Rule::dimensions()
                    ->width(300)
                    ->height(300)
            ],
            'hero' => [
                Rule::dimensions()
                    ->minWidth(1200)
                    ->minHeight(600)
                    ->maxHeight(800)
                    ->ratio(2)
            ],
            'gallery' => [
                Rule::dimensions()
                    ->minWidth(800)
                    ->minHeight(600)
                    ->maxWidth(3000)
                    ->maxHeight(2000)
            ],
            default => [
                Rule::dimensions()
                    ->minWidth(400)
                    ->minHeight(400)
            ]
        };
    }
}

Правило dimensions гарантує оптимальну якість зображень у вашій програмі, запобігаючи проблемам зі зберіганням та пропускною здатністю через неправильно підібрані uploads