如何使用laravel中的干预图像处理库以自定义比例调整图像大小

时间:2014-04-16 12:15:25

标签: php laravel image-manipulation

我想调整自定义比例为(width:height)=(5:1)

的图片

所以请给我一些建议。

3 个答案:

答案 0 :(得分:8)

我认为最好的解决方案可能是使用库中的fit()

像这样:

// open 4/3 image for example
$image = Image::make('foo.jpg');

// your desired ratio
$ratio = 16/9;

// resize
$image->fit($image->width(), intval($image->width() / $ratio));

它不会拉伸图像。

答案 1 :(得分:4)

我不认为干预图像库在其调整大小功能中有此选项。您可以使用getimagesize() php函数获取高度和宽度,并将宽度除以5(在您的情况下为5,因为您需要5:1)来获得高度。

$image=getimagesize($image_file);
$width=$image[0]; // $image[0] is the width
$height=$image[0]/5; // $image[1] is the height

您可以使用干预的resize()功能调整到该高度和宽度。

Image::make($source_image)
     ->resize($width,$height ,false,false)
     ->save($destination);`

答案 2 :(得分:1)

我选择fit()而不是resize()来修改图片,避免将图像拉伸到太多。

我在我的项目中使用了一个php代码段,这可能会有所帮助。

$img = Image::make($pictureOriginalPath);
// Picture ratio
$ratio = 4/3;

// Check the current size of img is appropriate or not,
// if ratio of current img is greater than 1.33, then crop
if(intval($img->width()/$ratio > $img->height()))
{
    // Fit the img to ratio of 4:3, based on the height
    $img->fit(intval($img->height() * $ratio),$img->height());
} 
else
{
    // Fit the img to ratio of 4:3, based on the width
    $img->fit($img->width(), intval($img->width()/$ratio));
}

// Save, still need throw exception
$img->save($pictureNewPath);