簡介
Laravel 透過Image Facade 提供流暢的圖片加工 API。你可以在整個框架中以一致的表達方式進行縮放、裁切、編碼、儲存等操作。
其內部使用 Intervention Image,同時支援 PHP 的 GD 擴充與 Imagick 擴充。
此功能需 Laravel v13.20.0 以上。若使用較舊版本,請以
composer update 更新到最新版。安裝
在使用圖片加工功能前,請透過 Composer 安裝 Intervention Image。設定
設定檔位於config/image.php。若尚未存在,可透過 Artisan 發布:
IMAGE_DRIVER 指定。支援 gd 與 imagick。
讀取圖片
Image Facade 提供多種方法從不同來源建立圖片實例。圖片內容為延遲載入,僅在真正處理或要求 byte 序列時才會實際載入。
上傳的檔案
從請求取得上傳圖片可用image 方法。若檔案不存在則回傳 null。
UploadedFile 實例建立可用 fromUpload。
file 方法取回原始檔案。
儲存空間中的檔案
要從檔案系統磁碟所儲存的檔案建立圖片實例,可使用fromStorage。第一個參數為檔案路徑,第二個為磁碟名稱。
image 方法建立。
其他來源
亦可從 byte、本機路徑、URL、Base64 建立圖片實例。加工圖片
圖片實例是不可變的。每個方法都會回傳將轉換加入處理管線的新實例,因此可以方法鏈書寫。轉換會依加入管線的順序處理,編碼則只在最後執行一次。縮放
其他轉換
條件式轉換
圖片實例支援Conditionable trait,可用 when / unless 進行條件式轉換。
編碼
預設會以原格式編碼,若要轉換格式可用以下方法:quality 設定輸出品質(1〜100):
optimize 是格式轉換 + 品質設定的捷徑。預設為 WebP、品質 70:
儲存
store 方法可將圖片存到檔案系統磁碟。Laravel 會自動產生唯一檔名,回傳儲存路徑。
storeAs。
public 可見性儲存可用 storePublicly / storePubliclyAs。
false。
取得圖片資訊
透過mimeType、extension、dimensions、width、height 方法可取得圖片資訊。這些方法會對經處理後的圖片作用(例如 cover(400, 400) 之後呼叫 width() 會回傳 400)。
自訂驅動
Laravel 的圖片管理器繼承Illuminate\Support\Manager,可透過 extend 註冊自訂驅動。
自訂驅動需實作 Illuminate\Contracts\Image\Driver 介面,process 方法接收原始圖片 byte 與管線,並回傳處理後的圖片 byte。
boot 方法中註冊:
using:
自訂轉換
實作Illuminate\Contracts\Image\Transformation 介面的類別可以定義自訂轉換。
boot 方法中註冊 handler:
transform 方法套用: