Данный пакет позволяется форматировать ваши изображения, создавать миниатюры, налаживать водяные знаки и тд. Обо всем его функционале вы можете почитать на официальном сайте, я же приведу лишь пример установки данного пакета в проект на "чистом" php и базовое его использование. А именно - получение файла из формы и его сохранение в двух вариантах - с разрешением 1024х768 и 100х60.
Установка.
Установка осуществляется с помощью Composer - php-менеджера зависимостей.Про Composer рассказывать не буду, если вы еще не умеете с ним работать, то обязательно стоит этому научиться, т.к. в настоящее время любой фреймворк и любое серьезное php-приложение его использует для загрузки различных библиотек, как это сейчас будем делать мы.
Команда установка пакета:
composer require intervention/image
Использование.
Цель данной заметки - показать базовое использование данной библиотеки. Поэтому, для наглядности и простоты, я решил разместить простенькую форму и php код в одном файле и не буду выполнять проверки, которые необходимы при получении данных из формы.<?php //подключение автозагрузчика Composer require 'vendor/autoload.php'; if(isset($_FILES['img'])){ if(is_uploaded_file($_FILES['img']['name'])){ //название исходного файла без расширения $fileName = pathinfo($_FILES['img']['name'], PATHINFO_FILENAME); //расширение $fileExtension = pathinfo($_FILES['img']['name'], PATHINFO_EXTENSION); $img = $_FILES['img']['tmp_name']; //путь к файлу из временной папки //Объект Intervention\Image\ImageManager для работы с изображениями $manager = new Intervention\Image\ImageManager(array('driver' => 'imagick')); /* * Метод resize изменяет размер изображения * 1-й аргумент - ширина * 2-й аргумент - высота * 3-й аргумент (не обязательный) - доп.методы, тут - сохранить пропорции * Метод save - сохраняет изображение - передать полный путь с названием файла */ $img = $manager->make($img)->resize(1024, 768,function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save('uploads/'.$_FILES['img']['name']); $img_mini = $manager->make($img)->resize(100, 60,function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save('uploads/'.$fileName.'-100x60'.'.'.$fileExtension); } } ?> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="img" id="img"> <input type="submit"> </form>
В данном примере изображение переданное из формы будет сохранено в папку uploads дважды:
1. С разрешением 1024х768px, имя файла будет как у исходного изображения;
2. С разрешением 100х60px, к имени файла будет добавлена строка «-100x60», например myimg-100x60.jpg
Я максимально прокомментировал код, думаю дополнительно пояснять нет смысла. Конечно, после сохранения файла можно сохранить его название в базу данных в соответствующую таблицу и тд., это уже все как обычно.
Тут выполняет как раз то, что очень часто необходимо при загрузке изображений на сервер из формы - большой размер изображения уменьшается до желаемого и сохраняется как исходное изображение, а так же создаются миниатюры для вывода на страницах, где нецелесообразно использовать и загружать изображение целиком. Разумеется можно создать множество миниатюр с разными размерами.
В библиотеке Intervention Image есть много интересных методов для обработки изображений, не только их уменьшение, заходите на официальный сайт, читайте.
Т.к. библиотека универсальна, ее можно подключить к любому фреймворку, а что касается Laravel, то есть инструкция как это сделать для максимально комфортного использования.