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

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

309

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

Почему мы должны изменять размер изображений?

На сайте есть несколько сценариев, когда нам нужно вывести короткую версию большого изображения. Популярным примером является Галерея изображений. В галерее мы раньше отображали список небольших изображений. Когда пользователь нажимает на маленькое изображение, оно открывает большое изображение во всплывающем окне. Другой пример – отображение связанных статей, где мы показываем небольшие изображения вместе с заголовком и описанием сообщения.

В этих сценариях нам нужно сгенерировать небольшое изображение (миниатюру), используя наше исходное изображение. Небольшой эскиз уменьшает размер ваших страниц. Поскольку вы используете маленькую миниатюру, браузеру требуется низкая пропускная способность для загрузки изображения. Это добавит сайту некоторых преимуществ. Некоторые из них:

  • Повышает производительность сервера
  • Уменьшить пропускную способность
  • Увеличьте скорость страницы

При этом давайте посмотрим, как изменить размер изображения в PHP.

Начиная

Intervention Image – это библиотека с открытым исходным кодом, которая действует как инструмент для изменения размера изображения. Под капотом Intervention Image использует GD Library и Imagick для обработки изображений и манипуляций с ними.

Для начала вам необходимо установить в свое приложение библиотеку Intervention Image. Я рекомендую использовать Composer для установки библиотеки.

Откройте терминал в корневом каталоге вашего проекта и выполните команду ниже.

composer require intervention/image

После установки библиотеки вам необходимо включить ее среду в свое приложение. Для этого включите в файл PHP две строки ниже.

<?php
// include composer autoload
require 'vendor/autoload.php';
  
use InterventionImageImageManagerStatic as Image;

Чтобы загрузить изображение и изменить его размер, нам нужна форма, в которой можно просмотреть изображение и нажать кнопку отправки. Используйте приведенный ниже HTML-код, который содержит ввод файла и кнопку отправки.

<form method="post" enctype="multipart/form-data">
    <p><input type="file" name="image" /></p>
    <input type="submit" name="submit" value="Submit">
</form>

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

Мы установили библиотеку и создали форму. Затем мы должны загрузить и изменить размер изображения на лету. Я собираюсь создать два каталога uploadsи thumbnails. В uploadsпапке мы будем хранить исходное изображение. Версия эскиза изображения будет храниться внутри thumbnailsкаталога.

Используйте приведенные ниже кода, который будет хранить оригинал и миниатюрную версию изображения в uploadsи thumbnailsкаталоги соответственно.

<?php
require 'vendor/autoload.php';
  
use InterventionImageImageManagerStatic as Image;
 
$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
 
if (isset($_POST['submit'])) {
 
    if (in_array($_FILES['image']['type'], $allowed_mime_type)) {
 
        if (!file_exists('uploads')) {
            mkdir('uploads', 0755);
        }
 
        $filename = time().'_'.$_FILES['image']['name'];
        $filepath = 'uploads/'. $filename;
        move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
 
        if (!file_exists('uploads/thumbnails')) {
            mkdir('uploads/thumbnails', 0755);
        }
 
        $thumbnailpath = 'uploads/thumbnails/'. $filename;
        $img = Image::make($filepath);
        $img->resize(300, null, function ($constraint) {
            $constraint->aspectRatio();
        });
        $img->save($thumbnailpath);
    }
}

В приведенном выше коде я передал ширину 300 и изменил размер изображения, сохранив их соотношение сторон. Вы можете передать значение ширины в соответствии с вашими требованиями. При изменении размера изображения рекомендуется сохранять соотношение сторон. При использовании формата изображения изображение не растягивается. Однако, если вы ищете жесткий урожай, замените строки ниже.

$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

С участием

$img->resize(300, 150)->save($thumbnailpath);

Заключение

В этом уроке мы изучили, как изменять размер изображений, сохраняя их соотношение сторон. Мы также написали код, который будет жестко обрезать изображение. Библиотека Intervention Image предоставляет еще несколько вариантов resizeметода. Вы можете прочитать об этом больше в их документации.

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

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

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