TAY
笔记 · · 阅读 140

Laravel 裁剪图片 intervention/image 扩展包的使用

安装

composer require intervention/image

使用

//use Intervention\Image\Drivers\Gd\Driver; 存在问题
use Intervention\Image\Drivers\Imagick\Driver;

生成一个宽度280px,高度等比例缩放的图片。

$manager = new ImageManager(new Driver());
$thumb = $manager->read(public_path('/图片路径'));
$thumb->scale(width: 280);
$thumb->save(public_path('/uploads/thumbs/图片名称'));

用Gd库存在问题:

不幸的是,GD库的内存消耗是一个反复出现的问题。

对于GD库,不能将文件大小与内存消耗直接等同起来。不幸的是,GD消耗更多;例如,对于4000x3000像素、RGB、每个通道8位的图像,您必须分配大约50 MB才能将其放入内存,即使它只占用硬盘上的大约2-3 MB。每次操作都需要额外的内存。

在read()函数中,除了读取图像外,还提取EXIF数据(对于Jpeg格式),并根据这一点执行对齐(旋转/翻转),这两种操作都会继续消耗内存。

如果您正在处理大图像,我建议您使用Imagick。它的内存效率要高得多。

目录