Конвертер соотношения изображений в Laravel PHP: методы и примеры кода

Чтобы создать преобразователь пропорций изображения в Laravel PHP, вы можете использовать различные методы в зависимости от ваших требований. Вот несколько методов с примерами кода:

Метод 1: использование пакета изображений вмешательства

  1. Установите пакет Intervention Image, выполнив следующую команду в своем проекте Laravel:
    composer require intervention/image
  2. Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
    use Intervention\Image\Facades\Image;
    public function convertImageRatio($path, $width, $height)
    {
    $image = Image::make($path)->resize($width, $height, function ($constraint) {
        $constraint->aspectRatio();
        $constraint->upsize();
    });
    // Save or output the converted image
    $image->save('path/to/save/image.jpg');
    // or
    $image->response('jpg');
    }

Метод 2: использование встроенной библиотеки GD

  1. Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
    public function convertImageRatio($path, $width, $height)
    {
    list($originalWidth, $originalHeight) = getimagesize($path);
    $aspectRatio = $originalWidth / $originalHeight;
    $newWidth = $width;
    $newHeight = $newWidth / $aspectRatio;
    if ($newHeight > $height) {
        $newHeight = $height;
        $newWidth = $newHeight * $aspectRatio;
    }
    $image = imagecreatetruecolor($newWidth, $newHeight);
    $source = imagecreatefromjpeg($path);
    imagecopyresampled($image, $source, 0, 0, 0, 0, $newWidth, $newHeight, $originalWidth, $originalHeight);
    // Save or output the converted image
    imagejpeg($image, 'path/to/save/image.jpg');
    // or
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    }

Метод 3. Использование библиотеки Imagine

  1. Установите библиотеку Imagine, выполнив следующую команду в своем проекте Laravel:
    composer require imagine/imagine
  2. Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
    
    use Imagine\Gd\Imagine;
    use Imagine\Image\Box;
    use Imagine\Image\ImageInterface;

публичная функция ConvertImageRatio($path, $width, $height)
{
$imagine = new Imagine();
$image = $imagine->open($path);

$image->resize(new Box($width, $height), ImageInterface::THUMBNAIL_OUTBOUND)
    ->save('path/to/save/image.jpg');