我想调整自定义比例为(width:height)=(5:1)
在laravel
中使用Intervention image manipulation library。
如果图像拉伸,这不是问题。我不想放任何固定的高度或宽度。
所以请给我一些建议。
答案 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);