如何在Laravel上传之前压缩图像?

时间:2017-02-23 09:00:28

标签: php image performance laravel-5.3

我正在创建一个图片库网站,用户可以在其中上传任何图片,它们将显示在前端。我需要压缩图像而不影响它的质量以减小尺寸,这样页面加载速度不应该那么大。我使用以下代码上传图片:

$rules = array('file' => 'required');
$destinationPath = 'assets/images/pages'
$validator = Validator::make(array('file' => $file), $rules);
if ($validator->passes()) {
   $filename = time() . $uploadcount . '.' . $file->getClientOriginalExtension();
   $file->move($destinationPath, $filename);
   return $filename;
} else {
   return '';
}

3 个答案:

答案 0 :(得分:1)

您需要针对网络使用优化图片,因为用户可能会上传大图片(大小或分辨率)。您可能还希望从图像中删除元数据以进一步减小尺寸。干预图像非常适合调整/优化Laravel中Web使用的图像。您需要在保存之前优化图像,以便在加载网页时使用优化版本。

Intervention Image

答案 1 :(得分:1)

https://tinypng.com提供用于压缩图像的API服务。您需要做的就是在Laravel中安装他们的PHP库,从他们的网站获取开发人员密钥。之后,通过添加以下代码,您可以压缩上传的图像。在代码中,我假设您已将文件存储在“storage”目录下。

$filepath = public_path('storage/profile_images/'.$filename); 
\Tinify\setKey("YOUR_API_KEY");
$source = \Tinify\fromFile($filepath);
$source->toFile($filepath);

以下是博客的链接,其中介绍了如何在Laravel中http://artisansweb.net/guide-upload-compress-images-laravel上传和压缩图片

答案 2 :(得分:1)

在上传到服务器之前压缩图像的最佳和最简便的方法,我在这里找到:-

https://github.com/spatie/laravel-image-optimizer