2017-02-23 65 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'來安裝庫。然後嘗試上面的代碼。 –

相關問題