我正在创建一个图片库网站,用户可以在其中上传任何图片,它们将显示在前端。我需要压缩图像而不影响它的质量以减小尺寸,这样页面加载速度不应该那么大。我使用以下代码上传图片:
$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 '';
}
答案 0 :(得分:1)
您需要针对网络使用优化图片,因为用户可能会上传大图片(大小或分辨率)。您可能还希望从图像中删除元数据以进一步减小尺寸。干预图像非常适合调整/优化Laravel中Web使用的图像。您需要在保存之前优化图像,以便在加载网页时使用优化版本。
答案 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