WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Изменить размер изображения в Laravel с помощью библиотеки изображений вмешательства

929

Недавно один из наших читателей спросил, как изменить размер изображения в Laravel. Изменение размера изображения – обычная задача разработчиков. Разработчики должны делать это правильно. Рекомендуется изменять размер изображений в соответствии с размером контейнера. Это поможет вам улучшить скорость страницы. В этой статье мы изучаем, как изменить размер изображения в Laravel с помощью библиотеки Intervention Image.

Библиотека Intervention Image предоставляет простой способ изменить размер изображений. Эта библиотека использует GD Library и Imagick для внутренней обработки изображений.

Зачем изменять размер изображений?

Возьмем, к примеру, галерею. Во время работы над галереей мы обычно показываем небольшой эскиз в листинге. Когда кто-то нажимает на миниатюру, мы показываем исходное изображение. Здесь миниатюры – это измененная версия исходного изображения.

Допустим, ваш исходный размер изображения составляет 500 500, а размер контейнера миниатюр – 200 200. В этом случае вам следует изменить размер исходного изображения в соответствии с размером контейнера миниатюр. Использование изображения большого размера в маленьком контейнере – плохая практика. Это влияет на производительность сайта.

Это один из примеров того, почему мы должны изменять размер изображений. Есть еще много других. Сказав это, давайте посмотрим, как изменить размер изображения в Laravel с помощью библиотеки Intervention Image.

Монтаж

Для начала вам необходимо установить библиотеку Intervention Image в свой проект Laravel. В вашей системе должен быть установлен Composer. Откройте терминал в корневом каталоге вашего проекта и выполните следующую команду:

composer require intervention/image

После установки библиотеки откройте config/app.phpфайл и добавьте в него следующие строки.

Добавьте в $providersмассив поставщика услуг этого пакета .

InterventionImageImageServiceProvider::class

Затем добавьте фасад в $aliasesмассив.

'Image' => InterventionImageFacadesImage::class

Изменить размер изображения в Laravel

Чтобы изменить размер изображения, мы должны сначала написать код для загрузки изображения. Итак, сначала создайте каталог, в котором мы будем хранить изображения. Подойдите к терминалу и выполните команду:

php artisan storage:link

Эта команда создает каталог хранилища в папке общего доступа. В папке «хранилище» мы будем хранить полную и уменьшенную версию изображений.

Затем создайте форму в вашем файле просмотра. Я также добавляю код сообщения об успешном выполнении в файл лезвия.

@if (session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif
<form action="{{ url('PASS_ACTION_URL') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image" id="exampleInputFile">
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

Замените заполнитель “PASS_ACTION_URL” своим маршрутом.

В контроллере необходимо добавить фасад «Изображение» библиотеки, который мы добавили в config/app.phpфайл.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use Image;
 
class ImageController extends Controller
{
 
}

Добавляя фасад, мы можем вызывать функции библиотеки Intervention Image. В приведенном ниже коде я загружу изображение в двух местах. Одно из них – исходное изображение в папке profile_images. Второй находится в каталоге profile_images / thumbnail. Сначала я загружу исходное изображение в папку эскизов, а затем изменю его размер.

public function store(Request $request)
{
    if($request->hasFile('profile_image')) {
        //get filename with extension
        $filenamewithextension = $request->file('profile_image')->getClientOriginalName();
 
        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
        //get file extension
        $extension = $request->file('profile_image')->getClientOriginalExtension();
 
        //filename to store
        $filenametostore = $filename.'_'.time().'.'.$extension;
 
        //Upload File
        $request->file('profile_image')->storeAs('public/profile_images', $filenametostore);
        $request->file('profile_image')->storeAs('public/profile_images/thumbnail', $filenametostore);
 
        //Resize image here
        $thumbnailpath = public_path('storage/profile_images/thumbnail/'.$filenametostore);
        $img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
            $constraint->aspectRatio();
        });
        $img->save($thumbnailpath);
 
        return redirect('image')->with('success', "Image uploaded successfully."); //change the route as per your flow
    }
}

Здесь я пропорционально изменяю размер изображения. При этом вы сохраните соотношение сторон, и изображение не будет обрезано. Я передал ширину 400 и высоту 150. Вы можете изменить эти значения в соответствии с вашими требованиями.

Если вы ищете резкую обрезку, замените строки ниже

$img = Image::make($thumbnailpath)->resize(400, 150, function($constraint) {
    $constraint->aspectRatio();
});
$img->save($thumbnailpath);

С участием

$img = Image::make($thumbnailpath)->resize(100, 100)->save($thumbnailpath);

После этого вы получите эскиз размером 100 * 100.

Я надеюсь, что вы сможете узнать об изменении размера изображения в Laravel с помощью библиотеки Intervention Image. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее