Чтобы создать преобразователь пропорций изображения в Laravel PHP, вы можете использовать различные методы в зависимости от ваших требований. Вот несколько методов с примерами кода:
Метод 1: использование пакета изображений вмешательства
- Установите пакет Intervention Image, выполнив следующую команду в своем проекте Laravel:
composer require intervention/image - Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
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
- Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
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
- Установите библиотеку Imagine, выполнив следующую команду в своем проекте Laravel:
composer require imagine/imagine - Используйте следующий код, чтобы изменить размер изображения с сохранением соотношения сторон:
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');