保持调整大小的图像的纵横比与原始图像比率

时间:2017-11-04 10:32:17

标签: php laravel laravel-5 laravel-5.3 intervention

我希望通过Laravel 5.3中的Intervention \ Image调整大小。 使用以下代码:

        $resized = Image::make($image)->resize(640, null, function ($constraint) {
                $constraint->aspectRatio(); })->stream();
        $resized_thumb = Image::make($image)->resize(320, 213)->stream();

我得到这样的图像: http://clasifire.com/listing?category=1(如果您点击第一张图片转到其详细信息,您会发现其高度实际上更高)

但是这个图像会失去纵横比。 我想要的是,例如,考虑一下craigslist上的这个列表:https://sfbay.craigslist.org/d/antiques/search/ata,(向下滚动3-4行)

所以我不希望图像被拉伸,而是应该保持纵横比,如果需要,沿宽度/高度留下空白。

3 个答案:

答案 0 :(得分:0)

您应该添加另一个约束:

$constraint->upsize();

之后

$constraint->aspectRatio();

如果图片太小,可以防止图像放大。

答案 1 :(得分:0)

您可以考虑使用像Glide这样的软件包来动态生成图像(裁剪,大小,效果,水印,缓存等)并保持原始图像不变。 http://glide.thephpleague.com/

答案 2 :(得分:0)

你不应该一起指定和高度!仅使用一个维度和一个widen() OR heighten()函数:

按身高:

$resized_thumb = Image::make($image)->heighten(320)->stream();

按宽度:

$resized_thumb = Image::make($image)->widen(213)->stream();