2017-02-23 67 views
0

我正在制作一个图片库网站,用户可以上传任何图片,并将其显示在前端。我需要在不影响质量的情况下压缩图像以减小尺寸,以便页面加载速度不会产生太大影响。我用下面的代码上传图片:如何在Laravel上传之前压缩图像?

$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

我想大多数网络服务器和化网页浏览器的内容开箱即用支持gzip压缩,所以你应该不是真的需要为无损压缩做任何事情。当然这只影响服务器>客户端方向。 – apokryfos

+0

@apokryfos我已经启用gzipping使用htaccess和页面的洞察力也告诉我,压缩启用,但它仍然给我错误,以减少图像大小和我的网页速度只是在20-28之间。 –

+0

您可以使用图像干预调整图像大小,并同时存储 - 调整大小和原始版本。重新调整后的版本应该具有稍​​后将显示它们的尺寸 - 因此,您不会看到质量损失。如果你仍然需要原件,你也可以使用这种方法 –

回答

1

您需要优化网络使用情况为用户图像可以上传是这样的图像,以大(无论是在尺寸或分辨率)。您可能还想从图像中移除元数据以进一步缩小尺寸。干预图像非常适合在Laravel中调整/优化图像以供Web使用。在保存图像之前,您需要优化图像,以便在加载网页时使用优化版本。

Intervention Image

+0

我试图将它集成到Laravel,但运行下面的作曲家命令,但它给出的错误:php composer.phar需要干预/图片 无法打开输入文件:作曲家。 phar: php composer.phar需要干预/图像 –

+0

您是否在laravel项目目录中运行该命令? – TedRed

+0

是的。之后我跟随了这个博客,现在作曲家更新成功。 http://devartisans.com/articles/resize-images-laravel5.1 我想知道应该运行下面的工匠命令: php artisan vendor:publish --provider =“Intervention \ Image \ ImageServiceProviderLaravel5” –

0

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

$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

+0

请为您的代码提供压缩。 – timiTao

+0

首先通过在Laravel项目中运行命令'composer require tinify/tinify'来安装库。然后尝试上面的代码。 –

相关问题