2016-07-05 35 views
1

我有用戶上傳個人資料照片。這些圖片只有300x300像素時才能在頁面上看起來不錯。我不希望用戶必須裁剪自己的圖像。我需要以某種方式自己在後端裁剪圖像,使它們成爲正方形。如何減少大小和裁剪幼蟲圖像5.2

此外,我在驗證中對文件大小設置了限制,但我不確定是否有方法在上傳後更改文件大小。例如,我會在主頁上顯示多個用戶,並且他們的個人資料圖片的版本較小。有什麼方法可以減少此特定頁面上的文件大小,以便頁面加載速度更快。

摘要:我有laravel與圖像的兩個問題:

  1. 我想在用戶註冊過程裁剪資料圖片。
  2. 我想在縮略圖的同時降低圖像的大小。

這是我上傳檔案圖片的代碼。

public function register(Request $request) 
{ 
    $this->validate($request,[ 
     'first_name' => 'required|max:255', 
     'family_name' => 'required|max:255', 
     'password' => 'required|min:6|confirmed', 
     'picture' => 'mimes:jpeg,png|required|max:500', 
     // MAKE DESCRIPTION REQUIRED ON DEPLOY 'description' => 'required|min:50' 
    ]); 

    $user = new User; 
    $user->first_name = $request->first_name; 
    $user->family_name = $request->family_name; 
    $user->password = $request->password; 
    $user->save(); 

    $file = Input::file('picture'); 
    $file->move(public_path().'/images/',$user->id.'.jpg'); 

    $image = new Image; 
    $image->path='/images/'.$user->id.'.jpg'; 
    $image->user_id = $user->id; 
    $image->save(); 

    flash('Thank you for registering. Please verify your email address'); 

這是我在其中顯示用戶的個人資料圖片的視圖。

<img src={{$image->path}} alt={{$image->path}} style="max-width:300px;max-height:300px;border-radius:10px;"> 
+2

可能的重複http://stackoverflow.com/questions/14649645/resize-image-in-php和http://stackoverflow.com/questions/1855996/crop-image-in-php(只是尋找一般PHP的解決方案,它不一定是一個Laravel的問題) – herrjeh42

+0

在添加縮略圖方面,你可以使用像@codefocus提到的包,但它可能是矯枉過正的,特別是如果你使用的jpgs通常會在300x300上很好地壓縮,所以它取決於拇指的大小(文件大小的好處和清晰度)以及用戶最終看到較大圖像的可能性(緩存優勢)。 – ldg

回答

3

您最好使用composer包,例如InterventionImage

它將根據服務器上可用的內容使用GD2或ImageMagick。

+1

同意你應該爲此使用一個庫。上面提到的那個顯然對Laravel有鉤,所以應該讓事情變得更容易。雖然這會給你一個很好的功能,如「適合」,但你仍然需要處理裁剪,像[this](https://fengyuanchen.github.io/cropper/)或高端服務自動智能裁剪。 – ldg